Заголовок и метатеги не те - разбор причин
На странице выводится не тот заголовок или чужое описание. Разбираем причины по убыванию частоты, начиная с того, что реально попало в свойства страницы.
С чего начать
Смотрим, что лежит в свойствах страницы к моменту вывода:
// в подвале шаблона сайта, когда всё уже отработалоprintf("<!-- title=%s description=%s -->", $APPLICATION->GetTitle(false), $APPLICATION->GetProperty('description'));// пусто - значение никто не задал, а не «не подставилось»Заголовок и метатеги - это свойства страницы, которые кто-то устанавливает. Пустое значение в подвале означает, что установщика не было вовсе, и искать надо не место вывода, а место установки.
Проверяем порядок вызовов в шаблоне:
// header.php: заголовок выводится здесь$APPLICATION->ShowTitle(); // без аргумента подставит свойство title$APPLICATION->ShowMeta('description');// компонент задаёт заголовок позже, поэтому вывод берёт значение из буфераЗаголовок выводится в шапке, а устанавливается компонентом ниже по странице. Работает это благодаря буферизации, и любая правка, ломающая буфер, ломает и заголовок.
Смотрим значения у самого элемента:
$res = CIBlockElement::GetList([], ['ID' => $elementId], false, false, ['ID', 'IPROPERTY_VALUES']);print_r($res->GetNext()['IPROPERTY_VALUES'] ?? []);// заполненные значения у элемента перекрывают шаблоны раздела и инфоблока// значения по шаблону вычисляются при сохранении элемента, а не при выводеЗначения у элемента сильнее шаблонов. Один заполненный руками заголовок объясняет случай «у всех товаров правильно, а у этого своё», и правится он там же, где заполнен.
Ищем повторные установки заголовка:
grep -rn 'SetTitle\|SetPageProperty' /home/bitrix/www/local/templates/ | head# побеждает последний вызов, а не первый# установка в конце шаблона затирает значение, заданное компонентомУстановок заголовка на странице обычно больше одной. Побеждает та, что выполнилась последней, поэтому строка в конце шаблона сайта незаметно отменяет всю работу компонента.
Причины
-
Значение задано у самого элемента примерно 30% случаев
ПризнакШаблон работает на всём разделе, кроме нескольких элементов.
ПроверкаСмотрим значения свойств для поиска у конкретного элемента и раздела.
Что делатьЧистим значения у элемента, если нужен общий шаблон: заполненное поле сильнее шаблона.
-
Шаблон задан не на том уровне примерно 25% случаев
ПризнакВ разделе заголовки правильные, во вложенных разделах - нет, или наоборот.
ПроверкаСмотрим шаблоны на уровне инфоблока, раздела и вложенных разделов по цепочке.
Что делатьЗадаём шаблон на нужном уровне и полагаемся на наследование, а не дублируем его везде.
-
Заголовок перетирается кодом страницы примерно 20% случаев
ПризнакЗаголовок совпадает с названием страницы, а не с тем, что задал компонент.
ПроверкаИщем установку заголовка после подключения компонента и в конце шаблона.
Что делатьОставляем одно место установки заголовка: последний вызов побеждает предыдущие.
-
Страница отдаётся из кэша примерно 15% случаев
ПризнакШаблоны изменены, но на страницах остались старые заголовки.
ПроверкаСбрасываем кэш компонента и проверяем страницу ещё раз.
Что делатьСбрасываем кэш после правки шаблонов: заголовок собирается вместе с данными компонента.
-
Вывод заголовка настроен иначе примерно 10% случаев
ПризнакСвойство страницы заполнено правильно, а в браузере другой заголовок.
ПроверкаСмотрим вызов вывода заголовка в шаблоне сайта и его аргументы.
Что делатьПриводим вывод в порядок: вызов без аргумента берёт свойство страницы, а не название.
Частые вопросы
Чем заголовок страницы отличается от заголовка окна?
Заголовок окна - это метатег для браузера и поиска, заголовок страницы - обычно текст в вёрстке. Платформа хранит их как разные свойства, и задавать их можно по отдельности.
Почему шаблон не применился к старым элементам?
Значения по шаблону вычисляются и сохраняются при записи элемента. Старым элементам их пересчитывают повторным сохранением или отдельным скриптом.
Где задавать шаблоны заголовков?
В настройках инфоблока на вкладке поисковой оптимизации, отдельно для разделов и элементов. Оттуда они наследуются вниз по цепочке разделов.
Можно ли задать заголовок из кода компонента?
Да, установкой свойства страницы в файле результата или в эпилоге компонента. Важно делать это в одном месте, иначе значения перетирают друг друга.
Почему в заголовке остались подстановки?
В шаблоне указано поле, которого у элемента нет. Незаполненная подстановка остаётся в тексте как есть и выдаёт себя сразу.
Смежное
-
ЧПУ и SEO комплексного компонента - оглавление подтемы
-
Заголовки и метатеги каталога: шаблоны для разделов и товаров - как задают шаблоны
-
Дубли страниц каталога: канонический адрес, пагинация, фильтр - соседняя задача поисковой оптимизации
-
Правки шаблона компонента не видны: разбор причин - когда дело в кэше и файлах
-
Шаблон чужого компонента: копия, доработка результата, эпилог - где задают заголовок из компонента
-
Компоненты 2.0 - устройство компонентов целиком
-
Путь запроса на витрине: пролог, компоненты, буфер, эпилог - как заголовок попадает в готовую шапку
-
Свойства страницы: заголовок, метатеги, свои свойства - как свойства ставятся и в каком порядке