+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Как добавить в индексацию для поиска любые поля

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Источник: https://dev.1c-bitrix.ru/community/webdev/user/17890/blog/8606/

Как добавить в поисковый индекс еще и символьный код (CODE) элемента инфоблока

Стандартно, поле символьный код (CODE) у элементов инфоблока не индексируется.
Я так понимаю, что в большинстве своем оно хранит SEO-адресацию, поэтому и не добавили его в индексацию из коробки.

А если нужно, то это можно сделать через событие search::BeforeIndex так:


    /**
    * Событие "BeforeIndex" вызывается перед индексацией элемента функцией CSearch::Index.
    * @param array $arFields
    */
   public static function BeforeIndexHandler($arFields)
   {
      // тут в массиве список инфоблоков, для которых нужно искать еще и по символьному коду
      if ($arFields["MODULE_ID"] == "iblock" && in_array($arFields["PARAM2"], array(2, 14, 19, 55))) {
         if (array_key_exists("BODY", $arFields)) {
            CModule::IncludeModule('iblock');
            $rs = CIBlockElement::GetByID( intval($arFields['ITEM_ID']) );
            if ($ar = $rs->Fetch()) {
               $arFields["PARAMS"]['CODE'] = $ar['CODE'];
               $arFields["BODY"] = 'Код: ' . $ar['CODE'] . ' ' . $arFields["BODY"];
            }
         }
      }
      return $arFields;
   }




Кстати, через него можно что угодно к элементу приплюсовывать в поисковый индекс, как это написано в документации.

Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...