Настройка автогенерации SEO-тегов 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка автогенерации SEO-тегов 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1169
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    743
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка автогенерации SEO-тегов 1С-Битрикс

Автогенерация SEO-тегов — это заполнение <title>, <meta name="description"> и <h1> по правилам на основе данных элемента или раздела инфоблока. Нужна, когда каталог содержит тысячи позиций: ручное заполнение нецелесообразно, а пустые мета-теги критичны для индексирования.

Стандартные шаблоны в SEO-модуле

Базовый инструмент — правила мета-тегов в разделе Маркетинг → Поисковая оптимизация → Мета-теги. Для инфоблока задаётся шаблон с подстановками #NAME#, #SECTION_NAME#, #PROPERTY_{CODE}#. Это покрывает большинство случаев без программирования.

Для интернет-магазина типовой набор шаблонов:

Объект Title Description
Элемент каталога #NAME# — цена, характеристики Купите #NAME#. #PROPERTY_SHORT_DESC# Доставка от 1 дня.
Раздел каталога #NAME# — каталог товаров Широкий выбор в разделе #NAME#. #PROPERTY_SECTION_DESC#
Детальная страница статьи `#NAME# Блог`

Кастомная генерация через события

Когда шаблонов недостаточно (нужна сложная логика: разные шаблоны в зависимости от свойства, добавление данных из связанных элементов), используется обработчик события OnPageStart или OnBeforeProlog в init.php:

AddEventHandler('main', 'OnBeforeProlog', function() {
    global $APPLICATION;

    // Только для детальных страниц каталога
    if (!preg_match('#^/catalog/([^/]+)/([^/]+)/#', $_SERVER['REQUEST_URI'])) {
        return;
    }

    // Получаем текущий элемент из компонента нельзя напрямую,
    // поэтому используем данные из URL или запрашиваем отдельно
    $elementId = (int)$_REQUEST['ELEMENT_ID'];
    if (!$elementId) return;

    $el = \CIBlockElement::GetByID($elementId)->GetNext();
    if (!$el) return;

    $brand  = $el['PROPERTIES']['BRAND']['VALUE'] ?? '';
    $model  = $el['NAME'];
    $price  = \CCatalogProduct::GetByID($elementId)['PRICE'] ?? '';

    $APPLICATION->SetPageProperty('title',
        "{$brand} {$model} — купить за {$price} ₽ | Интернет-магазин"
    );
    $APPLICATION->SetPageProperty('description',
        "Купить {$brand} {$model} за {$price} ₽ с доставкой по всей России. " .
        ($el['PROPERTIES']['SHORT_DESC']['VALUE'] ?? '')
    );
});

Вызов SetPageProperty в OnBeforeProlog выполняется раньше, чем компоненты на странице, поэтому значение успевает попасть в <head>.

Генерация H1 независимо от title

<title> и <h1> должны отличаться — это хорошая практика. <h1> задаётся через свойство страницы h1:

$APPLICATION->SetPageProperty('h1', $el['NAME']);

В шаблоне страницы:

<h1><?= $APPLICATION->GetPageProperty('h1') ?: $APPLICATION->GetTitle() ?></h1>

Массовое обновление SEO-полей существующих элементов

Если нужно заполнить SEO-поля для тысяч существующих товаров по шаблону — делается через скрипт:

$res = \CIBlockElement::GetList(
    [],
    ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'],
    false,
    false,
    ['ID', 'NAME', 'IBLOCK_ID']
);

while ($el = $res->GetNextElement()) {
    $fields = $el->GetFields();
    $props  = $el->GetProperties();

    $seoTitle = $fields['NAME'] . ' — купить в интернет-магазине';
    $seoDesc  = 'Купите ' . $fields['NAME'] . ' с доставкой. ' .
                ($props['SHORT_DESC']['VALUE'] ?? '');

    \CIBlockElement::SetPropertyValuesEx($fields['ID'], $fields['IBLOCK_ID'], [
        'SEO_TITLE'       => $seoTitle,
        'SEO_DESCRIPTION' => $seoDesc,
    ]);
}

Скрипт запускается разово. После выполнения элементы получат заполненные SEO-поля, которые перекрывают шаблон из модуля.

Сроки выполнения

Настройка шаблонов автогенерации через SEO-модуль — 1–2 часа. Кастомная генерация с логикой через события + массовое обновление существующих элементов — 4–6 часов.