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

Дополнительный фильтр в компоненте search.page

+11 голос
1

Используя стандартный компонент search.page - указываю дополнительную фильтрацию по свойству. Таким образом:

global $prodFilter;
$prodFilter = array
(
"PROPERTY_PLACES_GRANTED" => '26' //только разрешенные модератором
);
 
$APPLICATION->IncludeComponent(
"bitrix:search.page", 
"custom", 
array(
"RESTART" => "N",
"NO_WORD_LOGIC" => "N",
"CHECK_DATES" => "N",
"USE_TITLE_RANK" => "N",
"DEFAULT_SORT" => "rank",
"FILTER_NAME" => "prodFilter",
"arrFILTER" => array(
0 => "iblock_Places",
),
"arrFILTER_iblock_Places" => array(
0 => "8",
),
"SHOW_WHERE" => "N",
"SHOW_WHEN" => "N",
"PAGE_RESULT_COUNT" => "5",
"AJAX_MODE" => "Y",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "3600",
"USE_LANGUAGE_GUESS" => "Y",
"DISPLAY_TOP_PAGER" => "N",
"DISPLAY_BOTTOM_PAGER" => "Y",
"PAGER_TITLE" => "Результаты поиска",
"PAGER_SHOW_ALWAYS" => "N",
"PAGER_TEMPLATE" => "",
"USE_SUGGEST" => "N",
"SHOW_RATING" => "",
"RATING_TYPE" => "",
"PATH_TO_USER_PROFILE" => "",
"AJAX_OPTION_ADDITIONAL" => "",
"NAME_TEMPLATE" => "",
"SHOW_LOGIN" => "Y",
"PATH_TO_SONET_MESSAGES_CHAT" => "/company/personal/messages/chat/#USER_ID#/",
"STRUCTURE_FILTER" => "structure",
"SHOW_ITEM_TAGS" => "Y",
"TAGS_INHERIT" => "Y",
"SHOW_ITEM_DATE_CHANGE" => "Y",
"SHOW_ORDER_BY" => "Y",
"SHOW_TAGS_CLOUD" => "N"
),
false
);
 

Но ничего не происходит, как будто фильтр и не указывал. Как фильтровать результат по нужному свойству?

спросил 15 Сен, 15 от аноним

1 Ответ

00 голосов
Дополнительная фильтрация указывается передаётся параметром в метод CSearch::Search(); http://dev.1c-bitrix.ru/api_help/search/classes/csearch/search.php
Ни о каких инфоблочных свойствах он, разумеется, не знает.

Методика обработки результатов компонента сводится к тому, что вы или до вызова компонента делаете дополнительный поиск (на API) и получаете набор ID интересующих вас элементов, и передаёте его в дополнительный фильтр, или (вероятно более подходящий вам вариант) - выполняете поиск по всему сайту с помощью компонента search.page, а в result_modifier шаблона фильтруете результаты поиска - например по указанным вами свойствам элементов инфоблока.
ответил 21 Сен, 15 от root (25,590 баллов)

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

0 голосов
3 ответов
0 голосов
1 ответ
спросил 08 Май, 13 от Ris (280 баллов)
0 голосов
0 ответов
спросил 18 Июль, 15 от аноним
0 голосов
2 ответов
0 голосов
7 ответов
спросил 18 Июль, 13 от Titan91 (1,120 баллов)