Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Не работает BeforeIndexHandler

00 голосов
3
Мне требовалось сделать поиск по польовательским свойствам в определённом инфоблоке, я сделал такую конструкцию в файле init.php
Код
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
function BeforeIndexHandler($arFields)
{
   if(!CModule::IncludeModule("iblock")) return $arFields;
   if($arFields["MODULE_ID"] == "iblock" && $arFields["PARAM2"] == 45)
   {
      $db_props2 = CIBlockElement::GetProperty(                    
                                    $arFields["PARAM2"],         
                                    $arFields["ITEM_ID"],         
                                    array("sort" => "asc"),       
                              Array("CODE" => "QUESTION"));   
      $db_props3 = CIBlockElement::GetProperty(                      
                        $arFields["PARAM2"],        
                        $arFields["ITEM_ID"],          
                        array("sort" => "asc"),       
                           Array("CODE" => "ANSWER"));                     
   if($ar_props2 = $db_props2->Fetch())
      $arFields["TITLE"] = trim($ar_props["VALUE"]);  
   if($ar_props3 = $db_props3->Fetch())
      $arFields["TITLE"] = trim($ar_props["VALUE"]);  
   }
   return $arFields; 
}

Но компонент поиска всё равно не ищет по нужным мне полям, кэш обновлял, элементы для поиска переиндексировал, ставил галочку этим пользовательским полям, чтобы участвовали в поиске, в чём может быть проблема?
спросил 04 Янв, 14 от sn4ket (100 баллов)

3 Ответы

00 голосов
До сих пор не удалось решить эту проблему, может всё таки кто-нибудь знает в чём может быть ошибка?
ответил 06 Апр, 14 от sn4ket (100 баллов)
00 голосов
может д свойства нельзя добавить,толко одно? других догадок нет в коде все верно.:?:
ответил 30 Июль, 14 от jade (120 баллов)
00 голосов
   if($ar_props2 = $db_props2->Fetch())
$arFields["TITLE"] = trim($ar_props["VALUE"]);  
   if($ar_props3 = $db_props3->Fetch())
$arFields["TITLE"] = trim($ar_props["VALUE"]); 

С названиями переменных напутано.
ответил 02 Дек, 14 от Ly (4,580 баллов)

Похожие вопросы

0 голосов
1 ответ
0 голосов
1 ответ
0 голосов
1 ответ
спросил 30 Июнь, 16 от аноним
0 голосов
0 ответов