Заголовки и метатеги каталога - шаблоны для разделов и товаров
Настраиваем заголовки и описания страниц каталога так, чтобы они собирались сами и не требовали ручной правки на каждом отдельном товаре.
Решение
Смотрим, что задано у конкретного элемента:
use Bitrix\Iblock\InheritedProperty\ElementValues;
$values = (new ElementValues(5, $elementId))->getValues();printf("title=%s\nkeywords=%s\ndescription=%s\n", $values['ELEMENT_META_TITLE'] ?? '-', $values['ELEMENT_META_KEYWORDS'] ?? '-', $values['ELEMENT_META_DESCRIPTION'] ?? '-');Значения собираются по цепочке: сначала своё у элемента, потом шаблон раздела, потом шаблон инфоблока. Первое найденное побеждает, и это объясняет, почему у одних товаров заголовок свой, а у других - собранный.
Задаём шаблоны для всего каталога:
use Bitrix\Iblock\InheritedProperty\IblockTemplates;
$templates = new IblockTemplates(5);$templates->set([ 'ELEMENT_META_TITLE' => '{=this.Name} - купить в {=site.title}', 'ELEMENT_META_DESCRIPTION' => '{=this.Name}: цена, характеристики, доставка.', 'SECTION_META_TITLE' => '{=this.Name} - каталог',]);Шаблон - это строка с подстановками, а не готовый текст. Он применяется ко всем элементам инфоблока сразу, и это единственный способ получить осмысленные заголовки на каталоге в десятки тысяч позиций.
Проверяем результат на готовой странице:
curl -s https://example.com/catalog/tovar/ | grep -oE '<title>[^<]*</title>'curl -s https://example.com/catalog/tovar/ | grep -o 'name="description"[^>]*' | head -1Проверяют именно готовую страницу сайта, а не форму в админке. Настройки показывают шаблон, а не результат его применения, и расхождение между ними - обычное дело при незакрытом кэше страниц.
Настраиваем заголовки страниц фильтрации:
// у умного фильтра свои шаблоны: они задаются в настройках самого фильтра'SEF_MODE' => 'Y','SAVE_IN_SESSION' => 'N',// без своих шаблонов все страницы фильтра получают заголовок раздела// у страниц-дублей заголовки совпадают: это первый признак лишних адресовСтраницы фильтра - отдельные адреса с одинаковым заголовком по умолчанию. Это прямой путь к тому, что поисковая система сочтёт их дублями, и лечится он шаблонами с подстановкой выбранных значений.
Кэш здесь мешает сильнее, чем где-либо. После смены шаблонов страницы отдаются из кэша со старыми заголовками, и проверка «не сработало» оказывается проверкой вчерашней копии.
Ручные заголовки на отдельных товарах стоит держать в узде. Каждый такой заголовок перекрывает шаблон и живёт своей жизнью: смена общего правила его не затронет, и через год каталог оказывается с двумя несогласованными наборами правил.
Заголовок страницы и заголовок в разметке - разные вещи. Первый показывается во вкладке браузера и в поиске, второй - на самой странице, и шаблоны у них тоже разные.
Типичные проблемы
Заголовок не меняется после правки шаблона.
Страница отдаётся из кэша. Проверяют на готовой странице после сброса кэша, а не сразу после сохранения.
У части товаров заголовок не по шаблону.
У них заполнено своё значение. Оно важнее шаблона и перекрывает его.
Все страницы фильтра с одним заголовком.
У фильтра не заданы свои шаблоны. По умолчанию страницы получают заголовок раздела.
В заголовке видна незаменённая подстановка.
Имя подстановки написано с ошибкой. Платформа оставляет неизвестную конструкцию как есть.
Описание страницы пустое.
Шаблон описания не задан ни на уровне элемента, ни на уровне инфоблока. Пустое значение никуда не подставляется.
Частые вопросы
Где задавать шаблоны: у инфоблока или у раздела?
У инфоблока - общее правило, у раздела - исключение для конкретной ветки. Значение раздела перекрывает общее и наследуется его подразделами.
Можно ли подставить цену или свойство?
Да, подстановками к полям и свойствам элемента. Цена в заголовке при этом устаревает вместе с кэшем страницы.
Что делать с дублями страниц фильтра?
Либо задавать им свои заголовки и описания, либо закрывать от индексации те сочетания, которые не нужны в поиске.
Почему заголовок в поиске отличается от заданного?
Поисковая система вправе показать свой вариант, если сочтёт его точнее. Шаблон задаёт то, что она видит, а не то, что обязана показать.
Смежное
- ЧПУ комплексного компонента - оглавление подтемы
- Заголовок и метатеги не те: разбор причин - когда шаблон не применяется
- ЧПУ комплексного компонента: настройка и разбор 404 - адреса тех же страниц
- Умный фильтр: настройка, свойства и адреса фильтрации - откуда берутся страницы фильтра
- Компоненты 2.0 - устройство компонентов целиком
- Дубли страниц каталога: канонический адрес, пагинация, фильтр - какой адрес считать основным