Битрикс SEO: метатеги, robots.txt и XML-sitemap через API

Битрикс имеет встроенные инструменты для SEO: управление метатегами, генерацию sitemap и настройку robots.txt. Рассмотрим как управлять всем этим программно и через административный интерфейс.

Установка метатегов страницы

// В шаблоне компонента или странице
global $APPLICATION;

$APPLICATION->SetPageProperty('title',       'Заголовок страницы для SEO');
$APPLICATION->SetPageProperty('description', 'Описание страницы не длиннее 160 символов');
$APPLICATION->SetPageProperty('keywords',    'ключевые, слова, через, запятую');

// В шапке шаблона выводим
$title       = $APPLICATION->GetPageProperty('title')       ?: $APPLICATION->GetTitle();
$description = $APPLICATION->GetPageProperty('description') ?: '';
$keywords    = $APPLICATION->GetPageProperty('keywords')    ?: '';

Canonical URL

// В header.php шаблона
$canonicalUrl = 'https://' . SITE_SERVER_NAME . $APPLICATION->GetCurPage();

echo '<link rel="canonical" href="' . htmlspecialchars($canonicalUrl) . '">';

// Или через SetPageProperty
$APPLICATION->SetPageProperty('canonical', 'https://example.ru/page/');

Open Graph теги

// В header.php
$ogTitle       = $APPLICATION->GetPageProperty('og_title')       ?: $pageTitle;
$ogDescription = $APPLICATION->GetPageProperty('og_description') ?: $pageDescription;
$ogImage       = $APPLICATION->GetPageProperty('og_image')       ?: '/img/default-og.jpg';
?>
<meta property="og:title"       content="">
<meta property="og:description" content="">
<meta property="og:image"       content="">
<meta property="og:url"         content="">
<meta property="og:type"        content="website">

SEO-свойства инфоблока

Для инфоблоков включите SEO-настройки в Контент → Инфоблоки → [Ваш инфоблок] → Вкладка SEO. Программный доступ:

use Bitrix\Iblock;

// Получить SEO-шаблон инфоблока
$templateObject = Iblock\Template\Entity::create($iblockId);

// Получить метатеги для конкретного элемента
$seoPropValues = Iblock\InheritedProperty\ElementValues::create($iblockId, $elementId);
$seoData = $seoPropValues->getValues();

$APPLICATION->SetPageProperty('title',       $seoData['ELEMENT_META_TITLE']);
$APPLICATION->SetPageProperty('description', $seoData['ELEMENT_META_DESCRIPTION']);
$APPLICATION->SetPageProperty('keywords',    $seoData['ELEMENT_META_KEYWORDS']);

XML Sitemap

Модуль seo генерирует sitemap автоматически. Настройка в Контент → Поисковая оптимизация → Карта сайта.

// Программное создание файла sitemap
Bitrix\Main\Loader::includeModule('seo');

$sitemapFile = new \Bitrix\Seo\SitemapFile('/', 'sitemap.xml');
$sitemapFile->save([
    [
        'loc'        => 'https://example.ru/',
        'lastmod'    => date('Y-m-d'),
        'changefreq' => 'weekly',
        'priority'   => '1.0',
    ],
    // ...
]);

robots.txt через CMS

Контент → Поисковая оптимизация → robots.txt. Базовая конфигурация:

User-agent: *
Disallow: /bitrix/
Disallow: /upload/tmp/
Disallow: /search/?*
Disallow: /*?print=
Disallow: /*?PAGEN
Allow: /

Sitemap: https://example.ru/sitemap.xml

Структурированные данные JSON-LD

// В header.php для статьи
if ($isArticlePage) {
    $schema = [
        '@context'      => 'https://schema.org',
        '@type'         => 'Article',
        'headline'      => $pageTitle,
        'description'   => $pageDescription,
        'datePublished' => $articleDate,
        'author'        => ['@type' => 'Organization', 'name' => 'Ваш сайт'],
    ];
    echo '';
}

Итог

Для SEO в Битрикс: используйте SetPageProperty для метатегов в компонентах, настройте SEO-шаблоны инфоблоков в административной панели, и добавьте JSON-LD разметку в header.php шаблона. Sitemap генерируется автоматически через модуль seo.