Модуль: Поисковая оптимизация (SEO) – версия 14.0.1 + Информационные блоки (iblock) – версия 14.0.2
Одним из ключевых моментов, появившихся в 14 версии продукта, возможность делать автоматизированные шаблоны для инфоблоков, а также появление вкладки SEO у инфоблока, разделов и его элементов, на которых можно задавать шаблоны мета-тегов: Title, Keywords, Description и так далее.
Перейдём в настройку инфоблока на вкладку SEO:
[spoiler]Нажав по кнопочке с «…», вы увидите список всех доступных шаблонов, которые можно подставить.
Шаблоны можно делать как для всего инфоблока (всех его разделов и товаров), так и для конкретных разделов, или товаров нужного раздела. Вы можете сделать настройку для всего инфоблока, а потом для конкретного раздела переопределить на свою персональную.
Так как сайт уже работал и у него были созданы свойства, которые использовались для мета-тегов, но их приходилось заполнять вручную для каждого товара или раздела, то нам нужно сделать шаблоны, которые смогут автоматически создавать у новых товаров нужные нам тексты. Поля задаваемые на сайте проекта до 14 версии, после создания правил и перевода сайта на новую схему, старые поля можно будет удалить за ненадобностью:
Начнём с «Заголовка окна браузера (META TITLE)» для элементов. Как видно из предыдущего скриншота, заголовок окна браузера для определенного товара:
Чай Руандийский Рукери Оранж Пеко / teatome.ru
Сделаем для этого тега автоматический шаблон. В карточке товара жмём по трём точкам и пытаемся найти подходящий нам шаблон, подставляющий название элемента:
Находим раздел «Поля элемента» -> «Название текущего элемента» - в поле появился шаблон «{=this.Name}» дописываем к нему «/ teatome.ru» и идём посмотреть что у нас получилось в товар, который был ранее создан:
Шаблон сработал, и мы получили название Meta Title по шаблону. Давайте попробуем создать новый товар и посмотрим как сработает шаблон на нем:
Мы создали новый товар, и как только мы нажали «Сохранить» или «Применить», шаблон срабатывает на вкладке SEO.
Повторяем наш успех, но уже с более сложным полем META DESCRIPTION:
«Купить чай руандийский черный оранж пеко. Доставка во все уголки России. Покупка без регистрации, с удобными способами оплаты - приятные бонусы от teatome.ru» - вот такой текст у нас в товаре, попробуем его собрать на шаблонах.
Обратите внимание, так как название товара стоит не в начале текста описания, нужно сделать его с маленькой буквы. Выберем из списка соответствующий шаблон:
Добавляем последний шаблон для META KEYWORDS и идём смотреть в товар, что у нас получилось:
Все поля мета-тегов заполнены. Идём в публичный раздел, посмотрим, как все это сработает. На странице с товаром, для которого мы только что настраивали теги, заходим в настройки компонента:
В настройках компонента:
Для вывода каталога используется комплексный компонент, проверяем, что мы используем новый шаблон «visual» (с выходом релиза это будет шаблон default):
В настройках видим, как выводились данные мета-тегов раньше (2). Отключаем старый вывод, как показано (1).
Отключаем для обеих настроек, (1) настройка служит для Разделов, (2) настройка служит для детального просмотра товара.
Проверяем, что включена галочка «Устанавливать заголовок страницы», чтобы компонент смог вывести наши шаблоны, созданные на вкладке SEO:
Проверяем в исходном коде страницы, что все установлено корректно:
На вкладке SEO мы можем управлять не только мета-тегами товаров, но и работать с картинками:
Для картинок анонса, детальной, а также для файловых свойств с картинками, можно устанавливать их Alt, Title и делать шаблоны названий файлов.
Нужно быть внимательным, все настройки для названий файлов срабатывают только для файлов, которые загружаются после ввода настроек. Если вы что-то меняете в настройках, все файлы, которые были загружены ранее, остаются в системе со своими названиями.
Разберем последнюю галочку "Очистить кеш вычисленных значений":
Данная галочка должна появляться как взведенная при любом изменение которое вы делаете, очищается кэш шаблонов которые вы исправляете и у вас на странице изменения происходят сразу.
Для разработчиков и кто хочет влиять на формирование результатов, существуют фильтры обработчики, часть из них могут быть вставлены через меню, часть могут быть прописаны вручную, немного расскажем про них:
- {=lower arg1 ... argN} - приведение к нижнему регистру
- {=upper arg1 ... argN} - приведение к верхнему регистру
- {=concat arg1 ... argN ", "} - сцепление строк через разделитель
- {=limit arg1 ... argN "<delimiter>" NN} - ограничение NN элементов по разделителю <delimiter>
- {=translit arg1 ... argN} - транслитерация выбранных аргументов
- {=min arg1 ... argN} - выборка минимального числового значения
- {=max arg1 ... argN} - выборка максимального числового значения
- {=distinct arg1 ... argN} - уникальные (без дублей) значения
.
Например, транслитерация "Блокнот, ручка, календарь" дает "Bloknotruchkakalendar"
Там еще компонента самописная (ну я так думаю, в кастомном разделе компонент она есть а в стандартном bitrix таковой нет, называется catalog.section.elements) для раздела, я туда добавил такой код:
Как с таким быть?
На мой взгляд, логика подставления списковых свойств нарушена: их нужно либо разделять по-умолчанию запятой, либо предоставлять возмжность указать разделитель.
Также непонятно, почему при подстановке в мета-теги не удаляется HTML-разметка (например, когда она используется в полях описания и анонса), которая там по-определению быть не может (а всего-то надо было вставить strip_tags или добавить такой фильтр).
{=this.ACTIVE_FROM} не жает результатов
Сам делал через обработчик OnEndBufferContent. В этот момент на входе вы имеете итоговых html. Ну а дальше можно исправлять что угодно и как угодно. Да криво, но мне помогло.
Спустя некоторое время выяснилось вот что - хранится-то строка целиком в базе сформированная. Формируется при сохранении элемента и лежит привязанная к элементу (это и правильно - нечего запросами разбрасываться при каждой загрузке страницы, хотя можно было через INNER сделать было, вдруг строка длинная окажется).
А затем и 2 файла нашел, которые надо подправить без нарушение функционала:
/bitrix/modules/iblock/admin/iblock_templates.ajax.php - примерно 60 строка вот в условии (elseif ($_REQUEST["ENTITY_TYPE"] === "E";) - т.к. я делал для элемента, то тут, кто хочет может сообразить и на разделы.
и
/bitrix/modules/iblock/lib/template/entity/element.php - там прямо сразу почти после объявления класса. (с разделами тоже думаю сообразите).
Поправил я эти 2 файлика, и все заработало, но ведь это не хорошо лазить туда, куда не просят. Там все записано на жесткую, поэтому отловить событие я даже не искал (считаю, что нет такого функционала, хотя х.з.).
Поэтому и вопрос к Юрию Волошину - решиться этот вопрос в дальнейшем или нет? ведь можно проверять просто в init.php наличие функции и потом просто объединять массивы (ну или на крайний случай как с отлавливанием отправки почты сделать, но первый лучше - я просто бы добавил необходимые поля). Правок там на 1 день по идее максимум не торопясь. Может это единичный случай, но думаю в дальнейшем сеошники и дальше будут подкидывать разработчикам что-то необычное.
Есть напр. след. структура:
Раздел <n>.1
Раздел <n>.1.а
Раздел <n>.1.б
...
Раздел <n>.1.я
Допустим для всех стоит шаблон {=this.Name}.
Сейчас я делаю так:мне нужно изменить только для Раздел <n>.1 : задаю "Купить {=this.Name}" (галочка "Изменить для этого раздела и его подразделов" автоматом вкл., если ее снять поле не доступно). Потом во всех подразделах Раздел <n>.1.а, .... ставлю SEO tile {=this.Name}. Но этих подразделов может быть много и это не удобно.
возможно есть способ попроще?
почему не разделить "Изменить для этого раздела и его подразделов" на две "Изменить для этого раздела" и "Изменить для подразделов"
Спасибо.
Будет и правда очень здорово, если добавите!
Очень нужно 1 правило: "если то" ну это прям часто встречается... + хотелось бы уже убирать html теги из мета информации на уровне ядра, а не в шаблоне ...
На сайте много новостей с одинаковым названием (еженедельные новости по определенным работам)
Требования того же яндекса, чтобы заголовки не повторялись.
Как можно в шаблоне SEO в дополнение к названию самой новости вывести, допустим id новости, параметр сортировки или дату создания?