На днях, работая над новым проектом, я столкнулся с очередной особенностью Битрикс Управление Сайтом.
Дело в том, что в стандартный поиск по каталогу товаров без особых усилий можно добавить собственные свойства, но вот возможности исключить из поисковой индексации стандартные поля в системе почему-то не предусмотрено.
Сегодня расскажу способе решения данной задачи и для чего это нужно в практическом плане.
Все просто. Представьте себе, что в вашем каталоге 1 000+ наименований товаров. У каждого есть подробное, развернутое описание. В результате скорее всего вы заметите, что поисковая выдача становится не совсем релевантной. Дело в том, что штатно БУС осуществляет полнотекстовый поиск по всему содержимому, а именно: название, анонс, детальное описание. Никаких опций для исключения стандартных полей из участия в поиске, как я уже говорил, не предусмотрено. Но нам требуется, чтобы поиск осуществлялся только по наименованию.
В решении данной задачи нам поможет событие BeforeIndex. Код, приведенный ниже, размещаем в файле php_interface/init.php
. Скорее всего он уже существует на вашем сайте, если нет, то его потребуется добавить. А вот и сам код:
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler"); function BeforeIndexHandler($arFields) { /*вместо 000 укажите индетификатор инфоблока каталога*/ $arrIblock = array(000); /*исключаем детальное описание и анонс*/ $arDelFields = array("DETAIL_TEXT", "PREVIEW_TEXT") ; if (CModule::IncludeModule('iblock') && $arFields["MODULE_ID"] == 'iblock' && in_array($arFields["PARAM2"], $arrIblock) && intval($arFields["ITEM_ID"]) > 0){ $dbElement = CIblockElement::GetByID($arFields["ITEM_ID"]) ; if ($arElement = $dbElement->Fetch()){ foreach ($arDelFields as $value){ if (isset ($arElement[$value]) && strlen($arElement[$value]) > 0){ $arFields["BODY"] = str_replace (CSearch::KillTags($arElement[$value]) , "", CSearch::KillTags($arFields["BODY"]) ); } } } return $arFields; } }
Далее переходим к переиндексации поиска: /bitrix/admin/search_reindex.php?lang=ru
, обязательно снимаем чекбокс «Переиндексировать только измененные» и запускаем переиндексацию. После завершения процедуры, переходим в публичную часть сайта и проверяем.
Больше информации о способах оптимизации и улучшения стандартного механизма поиска от БУС ищите здесь.
Оставить комментарий