Как настроить title и meta description в Битрикс: полное руководство

Введение

Статические страницы в Битрикс — это обычные HTML-файлы, сохранённые в структуре сайта. На них нет компонентов вроде bitrix:news.detail или bitrix:catalog.element, из которых система могла бы автоматически «вытащить» заголовок, описание и другие мета-данные. Рассмотрим, как это работает, на примере стандартного интернет-магазина, доступного к скачиванию с официального сайта через файл bitrix_setup.php.

💡 Важно: Следует отметить, что при наличии компонентов на странице нижеописанные правила также будут работать. И если в компонентах не переопределяются свойства страницы, логика работы не изменится.

Файл .section.php в корне сайта

Для начала рассмотрим файл index.php в корне сайта. По умолчанию заголовок и свойства страницы задаются в файле .section.php в корне сайта. Вот пример кода:

.section.php
$sSectionName = "Главная страница";
$arDirProperties = [
    "description" => "Мы предлагаем широкий ассортимент качественной одежды по адекватным ценам.",
    "keywords" => "женская одежда, мужская одежда, спортивная одежда, тапочки",
    "title" => "Магазин одежды",
    "keywords_inner" => "one, two, three",
];

Где:

  • $sSectionName — отвечает за хлебные крошки (breadcrumbs)
  • $arDirProperties — массив со свойствами страницы, устанавливаемыми в настройках модуля "Управление структурой"

Этот массив редактируется через панель "Эрмитаж" (Изменить раздел → Свойства раздела).

Добавление пользовательских свойств

Также в этот массив можно добавить свойства, не установленные в настройках, но для этого нам нужно редактировать файл .section.php напрямую через редактор. Дополним файл свойствами robots и author. Наш массив примет вид:

.section.php с дополнительными свойствами
$arDirProperties = Array(
    "description" => "Мы предлагаем широкий ассортимент качественной одежды по адекватным ценам.",
    "keywords" => "женская одежда, мужская одежда, спортивная одежда, тапочки",
    "title" => "Магазин одежды",
    "keywords_inner" => "one, two, three",
    "robots" => "noindex, nofollow",
    "author" => "Andrey"
);

Теперь значения этих свойств можно редактировать в панели "Эрмитаж" через свойства раздела.

Следует указать ещё одну особенность: метатег robots сразу добавился в <head> сайта. А вот свойства keywords_inner и author при необходимости обрабатываются вручную. Их можно получить методом $APPLICATION->GetProperty("КЛЮЧ_СВОЙСТВА_В_МАССИВЕ") или сразу вывести на экран $APPLICATION->ShowProperty("КЛЮЧ_СВОЙСТВА_В_МАССИВЕ") на странице index.php, которая унаследовала эти значения из .section.php.

⚠️ Внимание: Метод $APPLICATION->GetPageProperty("КЛЮЧ_СВОЙСТВА_В_МАССИВЕ") не вернёт унаследованного свойства из .section.php.

Редактирование через панель "Эрмитаж"

Также свойства можно указать в самом файле index.php через панель "Эрмитаж" (Изменить страницу → Заголовок и свойства страницы). Тут мы переопределяем наследуемые свойства. И для переопределённых свойств будет работать также метод $APPLICATION->GetPageProperty("КЛЮЧ_СВОЙСТВА_В_МАССИВЕ").

Переопределение свойств в файле

Можно не использовать панель "Эрмитаж", редактируя index.php напрямую. Свойства, как существующие, так и новые, задаются методом:

Установка свойства через PHP
$APPLICATION->SetPageProperty("PROP_ID", "Значение");

Где PROP_ID — это КЛЮЧ_СВОЙСТВА_В_МАССИВЕ переопределяемого свойства или ключ нового свойства.

Особая логика работы со свойством title

Для свойства title предусмотрена более глубокая логика. Это свойство можно задать как методом $APPLICATION->SetTitle("Значение свойства 1"), так и методом $APPLICATION->SetPageProperty("title", "Значение свойства 2").

Случай 1: Установка через SetTitle()

В первом случае ($APPLICATION->SetTitle("Значение свойства")) метод $APPLICATION->GetPageProperty("title") не вернёт заданного значения. Будут работать методы:

Работа с title через SetTitle()
$APPLICATION->SetTitle("Значение свойства 1");

$APPLICATION->GetProperty("title"); 
// вернёт значение свойства, заданное в массиве $arDirProperties файла .section.php. Если такового нет — пустое значение

$APPLICATION->ShowProperty("title"); 
// выведет значение свойства, заданное в массиве $arDirProperties файла .section.php. Если такового нет — пустое значение

$APPLICATION->ShowTitle(); 
// выведет значение свойства, заданное в массиве $arDirProperties файла .section.php. Если такового нет — выведет "Значение свойства 1" на экран

$APPLICATION->ShowTitle(false); 
// выведет "Значение свойства 1" на экран

$APPLICATION->GetPageProperty("title"); 
// пустое значение

Случай 2: Установка через SetPageProperty()

Второй случай. Зададим значение свойства через $APPLICATION->SetPageProperty("title", "Значение свойства 2"):

Работа с title через SetPageProperty()
$APPLICATION->SetPageProperty("title", "Значение свойства 2");

$APPLICATION->GetProperty("title"); 
// вернёт "Значение свойства 2"

$APPLICATION->ShowProperty("title"); 
// выведет "Значение свойства 2"

$APPLICATION->ShowTitle(); 
// выведет "Значение свойства 2"

$APPLICATION->ShowTitle(false); 
// пустое значение

$APPLICATION->GetPageProperty("title"); 
// выведет "Значение свойства 2"

Случай 3: Использование обоих методов

Третий случай — использование обоих методов:

Комбинированное использование SetTitle() и SetPageProperty()
$APPLICATION->SetPageProperty("title", "Значение свойства 2");
$APPLICATION->SetTitle("Значение свойства 1"); 
// Порядок подключения методов не имеет значения

$APPLICATION->GetProperty("title"); 
// вернёт "Значение свойства 2"

$APPLICATION->ShowProperty("title"); 
// выведет "Значение свойства 2"

$APPLICATION->ShowTitle(); 
// выведет "Значение свойства 2"

$APPLICATION->ShowTitle(false); 
// выведет "Значение свойства 1"

$APPLICATION->GetPageProperty("title"); 
// выведет "Значение свойства 2"

Случай 4: Свойство title не установлено

Четвёртый случай. Не установлено свойство title на странице:

Отсутствие свойства title
$APPLICATION->GetProperty("title"); 
// вернёт значение свойства, заданное в массиве $arDirProperties файла .section.php. Если такового нет — пустое значение

$APPLICATION->ShowProperty("title"); 
// выведет значение свойства, заданное в массиве $arDirProperties файла .section.php. Если такового нет — пустое значение

$APPLICATION->ShowTitle(); 
// выведет значение свойства, заданное в массиве $arDirProperties файла .section.php. Если такового нет — пустое значение

$APPLICATION->ShowTitle(false); 
// выведет пустое значение

$APPLICATION->GetPageProperty("title"); 
// пустое значение

Важное замечание о порядке применения

💡 Важно: Свойства страницы можно указать в любом месте страницы. Применится последнее заданное значение в коде.

Работа со страницами, отличными от index.php

Для страниц, название которых отличается от index.php, функционал похож, но не один в один. Рекомендую для новых страниц, которые участвуют в визуале, создавать папки, внутри папок — индексный файл и файл .section.php. Тогда работа со свойствами сведётся к уже вышеописанной для корня сайта.

Причём, если значения свойств в .section.php раздела не заданы, они наследуются из вышележащего раздела или корня сайта.

Готовы обсудить ваш проект?

Оставьте заявку, и я свяжусь с вами в течение 2 часов в рабочее время (Пн-Пт 9:00-18:00).