Умный фильтр
Компонент подготавливает фильтр для выборки из инфоблока и выводит форму фильтра для фильтрации элементов.
Описание catalog.smart.filter
Компонент должен подключаться перед компонентом вывода элементов каталога, иначе список элементов фильтроваться не будет. Компонент стандартный, входит в дистрибутив модуля и содержит четыре шаблона: .default, bootstrap_v4, visual_horizontal и visual_vertical (последние два шаблона не поддерживаются, остались для сохранения совместимости).
В визуальном редакторе компонент расположен по пути Контент > Каталог > Умный фильтр.
Компонент относится к модулю Информационные блоки.
Внимание! В префильтре нельзя использовать вызов CIBlockElement::SubQuery.
Параметры
Примечание: в компоненте имеется специальный параметр SHOW_ALL_WO_SECTION, принимающий значения Y|N. Если задано значение Y, то будут отображены все элементы инфоблока, если не указан раздел.
Пример вызова
<?$APPLICATION->IncludeComponent( "bitrix:catalog.smart.filter", ".default", array( "COMPONENT_TEMPLATE" => ".default", "IBLOCK_TYPE" => "books", "IBLOCK_ID" => "6", "SECTION_ID" => "10", "SECTION_CODE" => "", "FILTER_NAME" => "arrFilter", "HIDE_NOT_AVAILABLE" => "N", "TEMPLATE_THEME" => "blue", "FILTER_VIEW_MODE" => "horizontal", "DISPLAY_ELEMENT_COUNT" => "Y", "SEF_MODE" => "Y", "CACHE_TYPE" => "A", "CACHE_TIME" => "36000000", "CACHE_GROUPS" => "Y", "SAVE_IN_SESSION" => "N", "INSTANT_RELOAD" => "Y", "PAGER_PARAMS_NAME" => "arrPager", "PRICE_CODE" => array( 0 => "BASE", ), "CONVERT_CURRENCY" => "Y", "XML_EXPORT" => "N", "SECTION_TITLE" => "-", "SECTION_DESCRIPTION" => "-", "POPUP_POSITION" => "left", "SEF_RULE" => "/examples/books/#SECTION_ID#/filter/#SMART_FILTER_PATH#/apply/", "SECTION_CODE_PATH" => "", "SMART_FILTER_PATH" => $_REQUEST["SMART_FILTER_PATH"], "CURRENCY_ID" => "RUB" ), false );?>
Андрей Шварёв
|
||
Фильтр генерирует url вида arFilter_<ид свойства>_<некий код>.
Задача: взяв параметры фильтра из урл, использовать их для своих компонентов и фильтраций. <некий код> = abs( crc32( "значение свойства" ) ) - т.е. это просто crc32 сумма от строки, взятая по модулю. В базе, в таблице b_iblock_<ид нужного инфоблока>_index_val содержится весь перечень возможных значений. Высчитываем abs(crc32()) от каждого из значений, и формируем массив вида $arr = array( abs(crc32( "значение" ) ) => "значение", ... ), и далее - получаем искомое текстовое представление $arr[ "<искомый crc32 код>" ]. Пример кода:
Таким же образом, можно решить и обратную задачу, когда надо передать фильтру определенные параметры. Было бы здорово, если бы в будующих версиях продукта, в этой таблице появился столбец с уже вычисленными кодами, чтобы не формировать каждый раз большие массивы из всей таблицы. | ||
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.