Печать части страницы

Вводная часть:
Страница контакты. Там много информации, а по кнопке «печать» надо печатать только телефон, схему проезда и словесное описание как дорбаться.

Делаем через скриптик:

<script type="text/javascript">
function print1(){
var prtContent = document.getElementById('sclad');
var win = open();
win.document.open();
win.document.write('<img src="/wa-data/public/shop/img/shema-sklad2.png" />');
win.document.write(prtContent.innerHTML);
win.print();
win.document.close();
}
</script>

Где
print1 — вызывается по кнопке «напечатать схему»;
«sclad» — id блока с описанием, а изображение, которое дописываем в блок — специально подготовленная для печати схема проезда. На странице она тоже есть, но помельче, негожая для печати. Поэтому ее добавляем в окно для печати дополнительно.

Скрипт галереи

Перепробовала несколько разных скриптов.
Всегда возвращаюсь к highslider.
Самый удобный, надежный, гибкий.

Пара приемов по использованию галереи.

  • Если мы используем галерею в разных местах и разными способами, то удобнее загружать скрипт и css сразу в шапке. Добавляем в head highslide-full.js и highslide.css.
  • Для того, чтобы увеличивать картинку в любом месте сайта по клику, добавим в шапку небольшой скрипт —
    <script type="text/javascript">
    hs.graphicsDir = '/highslide/graphics/';
    hs.align = 'center';
    hs.transitions = ['expand', 'crossfade'];
    hs.outlineType = 'rounded-white';
    hs.fadeInOut = true;
    </script>

    Изображение, которое нужно увеличить, оформляем так:
    <a href="URL полного изображения" onclick="return hs.expand(this)" ><img src="URL превью" alt="" /> </a>
  • Чтобы убрать надпись в верхнем правом углу со ссылкой на автора галереи достаточно в highslide-full.js отредактировать значение showCredits с true на false.

Настраиваем умный фильтр на Битриксе

«Умный фильтр» — стандартный компонент Битрикса.
Его главная фишка в том, что результаты фильтрации отображаются на налету генерируемой странице с уникальным адресом, содержащим параметры поиска.
Например /topki/filter/brend-is-kratki/apply/
В этой заметочке я хочу написать о правильной настройке фильтра.
1. Красивого адреса мало, для страницы нужны метатеги и уникальное описание. Изобретать велосипед тут не будем, есть уже готовые плагины.
Их много, цены разные. Мы выбрали вот этот:
http://marketplace.1c-bitrix.ru/solutions/grain.seo/#tab-comments-link — есть тестовый период, скромная цена. И функционал не подвел, настроилось за 5 минут и все обещанное работает.
2. Адрес все же выходит не такой уж и красивый.
/topki/filter/brend-is-kratki/apply/ — filter, -is-, apply — лишние служебные слова не украшают адрес.
Поколдуем с ними.
2.1. apply убирается в настройках каталога без проблем.
2.2. filter убрать совсем нельзя. Это маркер для обработчика адресов каталога, он сообщает, что данный адрес на странице показывает не товар, а список отфильтрованных товаров. Но заменить его на что-то другое — возможно. Например — на некоторую короткое слово, возьмем, допустим, «kod». Это делается также в настройках каталога.
2.3. служебное слово -is- можно заменить в коде плагина /bitrix/components/bitrix/catalog.smart.filter/class.php
Для этого строку
$smartPart = preg_split("/-(from|to|is|or)-/", $smartPart, -1, PREG_SPLIT_DELIM_CAPTURE);
меняем на
$smartPart = preg_split("/(-from-|-to-|-|-or-)/", $smartPart, -1, PREG_SPLIT_DELIM_CAPTURE);
Соответственно редактируем и обработку smartpart несколькими строками ниже (учитывая, что «is» у нас стало «-«, а «from» и остальные — имеют формат «-from-«).
А также заменяем в конце файла $urlPart .= urlencode('-is-'.$smartElement);
на $urlPart .= urlencode('-'.$smartElement);
2.3. В результате трансформаций получаем адрес такого типа:
/topki/kod/brend-kratki/, что выглядит уже прилично и полезно.

Место на битриксе

Иногда возникает проблема нехватки места.
Из админки битрикса можно удалить без потери функционала демо-данные (более 100мб в сумме):
11M — /bitrix/modules/bitrix.sitecorporate
55M — /bitrix/wizards
42M — /bitrix/modules/bitrix.eshop

Webasyst: Текст отдельной страницы

Список текстовых страниц с их свойствами берется по команде $wa->shop->pages().
Свойства есть, а самого текста страницы нет.
Чтобы извлечь текст, нужно прочитать особо одну страницу.
{$p = $wa->shop->page($page.id)}
{$p.content}

Использовала эту особенность сегодня для вывода анонсов статей в блоке «смотри также» после статьи.

Яндекс: Навыки Алисы

Поисковики тянут на себя одеяло. Стараются, чтобы пользователи больше проводили времени на их сайтах и все реже оттуда уходили.
Недавно появились amp страницы Google и turbo Яндекса. Это текстовые страницы с вашей информацией, но хранящиеся на серверах поисковиков.
Загрузка вашего контента для ускоренных страниц на сервера Яндекса и Google происходит заранее, специальными роботами.
«Навыки для Алисы» Яндекса — это тоже созданный вами контент, который используют Яндекс-диалоги.

Для чего тогда создавать ускоренные страницы и навыки? Для увеличения переходов на ваш сайт. И диалоги, и turbo (amp) страницы содержат ссылки на ваш ресурс.
Т.е. пользуется вашей работой, в основном, Яндекс. Но и владельцам сайта перепадают дополнительные переходы с диалогов + растет авторитет и позиции сайта в глазах поисковика.

Это была лирика, далее делюсь опытом по созданию диалога для «Алисы».

0. Читаем хелп : )). Я создавала диалог, используя Node.js.
https://tech.yandex.ru/dialogs/alice/doc/quickstart-nodejs-docpage/
Загружаем и устанавливаем программу Now.

1. Размещаем на вашем компьютере папку, вносим начальные файлы. Находясь в папке жмем shift + правая кнопка мыши. Выбираем команду «открыть окно команд».

2. Вводим now. Генерируется имя вашей программы. Что-то типа https://myskill-alice-xushghnzaa.now.sh

3. Чтобы скрипт работал через Яндекс (там нужно использовать постоянное имя), привязываем скрипт к алиасу
now alias https://myskill-alice-xushghnzaa.now.sh alice-i, где https://myskill-alice-xushghnzaa.now.sh — свежесгенерированная программа, а alice-i — ваше название в Яндексе.

4. Кол-во программ зарегистрированных в now ограничено. Удаляем старые.
now rm

5. тестируем в Яндексе.

Никакого интерфейса для ввода вопросов-ответов менеджерами пока не существует.
Все пишется внутри вашего скрипта.

Вот фрагмент обработки нескольких запросов для сайта о каминах:


reply='Мы все знаем о каминах и печах. \n Что вас интересует? \n Сейчас готовы ответы на вопросы о биокаминах: \n Топливо для биокамина. \n\tГреет ли биокамин? \n\tКак долго горит литр биотоплива? \n\tКаких производителей биокаминов вы можете рекомендовать? ';
vopr=' ' + request.command.toLowerCase();
if(vopr.indexOf('опливо', 0)>0) reply='Для горения в биокаминах используется этанол';
if(vopr.indexOf('греет', 0)>0) reply='Биокамин предназначен в основном для дизайна, украшения помещения. Но при горении всегда выделяется теплота и вокруг биокамина будет теплее чем в других частях дома';
if(vopr.indexOf('литр', 0)>0) reply='Длительность горения зависит от модели горелки, в среднем одного литра хватает на 3-5 часов';
if(vopr.indexOf('производит', 0)>0) reply='Мы рекомендуем биокамины польской фирмы Kratki';

Редирект с https на http

Сейчас многие сайты используют протокол https (расширение протокола HTTP для поддержки шифрования в целях повышения безопасности). И достаточно часто возникает задача — редирект страниц сайта на https. Задача решается стандартно, правкой .htaccess.
Как-то так:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Но хотела сказать не про это.
Недавно возникла обратная задача — редирект с https на http. У сайта был сертификат безопасности, а теперь не стало.
Редирект пишется по аналогии с кодом выше.
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteRule ^/?(.*) http://%{SERVER_NAME}/$1 [R,L]

Но, оказывается, избавиться от сообщения об ошибке невозможно.
Дело в том, что когда браузер видит в адресе https, то он первым дело обращается не на сайт, а проверяет актуальность SSL-сертификата в центрах сертификации.
Так как сертификат отсутствует, то идет выдача сообщения об ошибке еще ДО ОБРАЩЕНИЯ к сайту, до того момента, когда вы в силах что-то предпринять, редирект предложить.