Как настроить поиск в Битриксе по включаемым областям

12 августа 2024
BXmeta
Если ваши страницы на Битриксе используют включаемые области или инструкции include или require_once, стандартный поисковый механизм не будет индексировать эти элементы.
В статье рассказывается, как решить эту проблему и настроить корректный поиск текста по включаемым областям. Узнайте, как обеспечить полную индексацию вашего контента и улучшить результаты поиска на сайте.

Решение

<?php
$eventManager = Main\EventManager::getInstance();
$eventManager->addEventHandler(
    'search',
    'BeforeIndex',
    ['searchProcessing', 'beforeIndexHandler']
);

class searchProcessing
{
    const SITE_DOMAIN = 'https://bxcode.ru'; //адрес сайта
    static function beforeIndexHandler($arFields)
    {
        if ($arFields["MODULE_ID"] == "main") {
            if (strpos($arFields['URL'], 'index.php') !== false) {
                $content = file_get_contents(self::SITE_DOMAIN . $arFields['URL']);
                // Удаление ненужных тегов из HTML-кода
                $pattern = '/<head.*?>.*?<\/head>|<header.*?>.*?<\/header>|<footer.*?>.*?<\/footer>/is';
                $content = preg_replace($pattern, '', $content);;
                $arFields['BODY'] = CSearch::KillTags($content);
            }
        }
        return $arFields;
    }
}
Если используется многосайтовость, код решения потребует доработки.