Разработка модуля SEO-автоматизации 1С-Битрикс
Редактор сидит и вручную заполняет <title> и <description> для каждой из 8 000 карточек товаров. Через неделю добавляют ещё 300 позиций — снова вручную. Через месяц выясняется, что половина мета-тегов не соответствует текущим ценам и остаткам. Это типичная ситуация для магазинов среднего размера на 1С-Битрикс: SEO-рутина убивает время, а автоматизации нет, потому что штатного инструментария не хватает.
Штатный модуль iblock позволяет задать шаблоны мета-тегов на уровне типа инфоблока, но возможности ограничены: нельзя обратиться к связанным элементам, применить условную логику, учесть цену или наличие. Кастомный модуль SEO-автоматизации закрывает этот пробел системно.
Что делает модуль
Ядро модуля — движок шаблонов с синтаксисом вида {ELEMENT_NAME} | {CATALOG_PRICE} | {SECTION_NAME}. Шаблоны компилируются в PHP-замыкания и кешируются через Bitrix\Main\Data\Cache, поэтому на фронтенде нет дополнительных запросов — только чтение из кеша.
Генерация мета-тегов по шаблону. Для каждого типа страниц (раздел каталога, элемент каталога, страница поиска, страница тега) настраивается свой шаблон. Переменные берутся из свойств инфоблока, полей торгового каталога (b_catalog_price, b_catalog_product) и кастомных источников.
Canonical и hreflang. Модуль перехватывает событие OnBeforeIBlockElementUpdate и автоматически проставляет canonical URL с учётом активного языка сайта (мультиязычная структура через Bitrix\Main\Localization).
Автоматические alt для изображений. Через агент \Bitrix\Main\Agent запускается фоновая задача: перебирает элементы инфоблока без заполненного DETAIL_PICTURE-alt и записывает значение по шаблону.
Генерация sitemap. Подключается к модулю seo (namespace Bitrix\Seo\SitemapFile) и расширяет логику: исключает страницы с noindex, учитывает приоритет по дате последнего изменения, разбивает на части при превышении лимита 50 000 URL.
Глубокий разбор: шаблонизатор и источники данных
Это самая сложная часть — правильно спроектировать источники данных, чтобы шаблон работал быстро даже при 100 000 элементов.
// Регистрация источника данных
\MyVendor\SeoModule\TemplateEngine::registerSource(
'CATALOG_PRICE',
function(int $elementId, array $context): string {
$price = \Bitrix\Catalog\PriceTable::getList([
'filter' => ['=PRODUCT_ID' => $elementId, '=CATALOG_GROUP_ID' => 1],
'select' => ['PRICE'],
'limit' => 1,
])->fetchObject();
return $price ? number_format($price->getPrice(), 0, '.', ' ') : '';
}
);
Источники данных регистрируются через статический реестр. При рендеринге шаблона движок определяет, какие источники нужны, и делает ровно столько запросов к БД, сколько необходимо — не больше. Для списков применяется пакетная загрузка через DataManager::getList с IN-фильтром по массиву ID.
Кеширование. Результат рендеринга кешируется с тегом iblock_id_N, что позволяет сбрасывать кеш точечно при изменении элемента через стандартный механизм тегированного кеша Битрикс (\Bitrix\Main\Data\TaggedCache).
Мониторинг. Модуль ведёт лог заполненности мета-тегов: для каждого раздела выводится процент страниц с непустым <title>, <description> и canonical. Таблица myvendor_seo_coverage обновляется через агент раз в сутки.
SEO-редиректы как часть модуля
Опционально в модуль включается управление 301-редиректами. Список правил хранится в собственной таблице myvendor_seo_redirects, правила компилируются в регулярные выражения и применяются через обработчик события OnPageStart до того, как Битрикс начнёт строить страницу. Это быстрее, чем проверка через .htaccess для динамических паттернов.
Интеграция с административной панелью
Модуль добавляет раздел в административный интерфейс Битрикс (через CAdminMenu и стандартный механизм страниц в /bitrix/admin/). В интерфейсе — редактор шаблонов с подсветкой переменных, предпросмотр для конкретного элемента и таблица покрытия.
Сроки разработки
| Объём проекта | Состав | Срок |
|---|---|---|
| Базовый | Шаблоны мета-тегов + canonical | 2–3 недели |
| Средний | + sitemap + alt-изображения + лог покрытия | 4–5 недель |
| Расширенный | + редиректы + интеграция с внешними SEO-API | 6–8 недель |
Перед стартом важно провести аудит текущих инфоблоков: структура свойств, количество языков, наличие торгового каталога и его конфигурация — всё это влияет на архитектуру источников данных.







