Налаштування автогенерації SEO-тегів 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування автогенерації SEO-тегів 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування автогенерації SEO-тегів для Bitrix CMS

Автогенерація 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# | Блог #PREVIEW_TEXT#

Користувацька генерація через подій

Коли шаблонів недостатньо (потрібна складна логіка: різні шаблони залежно від властивості, додавання даних з пов'язаних елементів), використовується обробник подій 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 годин.