что и почему в bitrix smart.filter , читаем эту статью
http://ftask.ru/2019/01/20/bitrix-%D0%B2%D1%8B%D0%B2%D0%B5%D1%81%D1%82%D0%B8-%D0%B2-%D0%BA%D0%BE%D1%80%D0%B5%D0%BD%D1%8C-%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0-smart-filter/
и смотрим видео
вот код файла News.php (в шаблоне). Важные места обозначены циферками 1, 2, 3 , 4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); /** @var array $arParams */ /** @var array $arResult */ /** @global CMain $APPLICATION */ /** @global CUser $USER */ /** @global CDatabase $DB */ /** @var CBitrixComponentTemplate $this */ /** @var string $templateName */ /** @var string $templateFile */ /** @var string $templateFolder */ /** @var string $componentPath */ /** @var CBitrixComponent $component */ $this->setFrameMode(true); ?> <?$APPLICATION->IncludeComponent( "bitrix:catalog.smart.filter", ".default", array( "COMPONENT_TEMPLATE" => ".default", "IBLOCK_TYPE" => "books", //1 "IBLOCK_ID" => "3", // //2 "SECTION_ID" => 0, // "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", //4 "SEF_RULE" => "/news2/filter/#SMART_FILTER_PATH#/apply/", "SECTION_CODE_PATH" => "", //4 "SMART_FILTER_PATH" => $_REQUEST["SMART_FILTER_PATH"], "CURRENCY_ID" => "RUB", 'SHOW_ALL_WO_SECTION'=>'Y', ), false );?> <?php global $arrFilter; ?> <?$APPLICATION->IncludeComponent( "bitrix:news.list", "", Array( "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "NEWS_COUNT" => $arParams["NEWS_COUNT"], "SORT_BY1" => $arParams["SORT_BY1"], "SORT_ORDER1" => $arParams["SORT_ORDER1"], "SORT_BY2" => $arParams["SORT_BY2"], "SORT_ORDER2" => $arParams["SORT_ORDER2"], "FIELD_CODE" => $arParams["LIST_FIELD_CODE"], "PROPERTY_CODE" => $arParams["LIST_PROPERTY_CODE"], "DETAIL_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["detail"], "SECTION_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["section"], "IBLOCK_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["news"], "DISPLAY_PANEL" => $arParams["DISPLAY_PANEL"], "SET_TITLE" => $arParams["SET_TITLE"], "SET_LAST_MODIFIED" => $arParams["SET_LAST_MODIFIED"], "MESSAGE_404" => $arParams["MESSAGE_404"], "SET_STATUS_404" => $arParams["SET_STATUS_404"], "SHOW_404" => $arParams["SHOW_404"], "FILE_404" => $arParams["FILE_404"], "INCLUDE_IBLOCK_INTO_CHAIN" => $arParams["INCLUDE_IBLOCK_INTO_CHAIN"], "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_FILTER" => $arParams["CACHE_FILTER"], "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], "DISPLAY_TOP_PAGER" => $arParams["DISPLAY_TOP_PAGER"], "DISPLAY_BOTTOM_PAGER" => $arParams["DISPLAY_BOTTOM_PAGER"], "PAGER_TITLE" => $arParams["PAGER_TITLE"], "PAGER_TEMPLATE" => $arParams["PAGER_TEMPLATE"], "PAGER_SHOW_ALWAYS" => $arParams["PAGER_SHOW_ALWAYS"], "PAGER_DESC_NUMBERING" => $arParams["PAGER_DESC_NUMBERING"], "PAGER_DESC_NUMBERING_CACHE_TIME" => $arParams["PAGER_DESC_NUMBERING_CACHE_TIME"], "PAGER_SHOW_ALL" => $arParams["PAGER_SHOW_ALL"], "PAGER_BASE_LINK_ENABLE" => $arParams["PAGER_BASE_LINK_ENABLE"], "PAGER_BASE_LINK" => $arParams["PAGER_BASE_LINK"], "PAGER_PARAMS_NAME" => $arParams["PAGER_PARAMS_NAME"], "DISPLAY_DATE" => $arParams["DISPLAY_DATE"], "DISPLAY_NAME" => "Y", "DISPLAY_PICTURE" => $arParams["DISPLAY_PICTURE"], "DISPLAY_PREVIEW_TEXT" => $arParams["DISPLAY_PREVIEW_TEXT"], "PREVIEW_TRUNCATE_LEN" => $arParams["PREVIEW_TRUNCATE_LEN"], "ACTIVE_DATE_FORMAT" => $arParams["LIST_ACTIVE_DATE_FORMAT"], "USE_PERMISSIONS" => $arParams["USE_PERMISSIONS"], "GROUP_PERMISSIONS" => $arParams["GROUP_PERMISSIONS"], //5 "FILTER_NAME" => 'arrFilter', //6 "INCLUDE_SUBSECTIONS" => 'Y', //"FILTER_NAME" => $arParams["FILTER_NAME"], "HIDE_LINK_WHEN_NO_DETAIL" => $arParams["HIDE_LINK_WHEN_NO_DETAIL"], "CHECK_DATES" => $arParams["CHECK_DATES"], ), $component );?> |
в urlrewrite должен быть такой код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
array ( 'CONDITION' => '#^/news2/filter/(.+?)/apply/#', 'RULE' => 'SMART_FILTER_PATH=$1', 'ID' => '', 'PATH' => '/news2/index.php', 'SORT' => 99, ), 9 => array ( 'CONDITION' => '#^/news2/#', 'RULE' => '', 'ID' => 'ftask:news', 'PATH' => '/news2/index.php', 'SORT' => 100, ), |
Как узнать, если результат нулевой? Фильтр в таком случае показывает все элементы
Возможно у вас фильтр не сработал. Надо внутрь компоненты лесть и проверять getList
В том то и дело, что он работает, но если при определенной фильтрации результат нулевой (т. е. не найдено элементов с таким фильтром), то показывает все элементы инфоблока.
Поможет лишь ручная проверка проблемных фильтров. При определенной фильтрации и должен быть нулевым результат. У вас разве чебоксы активность не теряют?
мне нужно, чтобы при переходе на ссылку фильтрации new.list показывал текст «Результатов нет» или типа такого. (без всплывающего окна у умного фильтра «Результаты: 0»)
Пока выполнила с помощью парсинга строки фильтрации (у меня фильтрация только по одному свойству) и передачи переменной через $_GLOBALS, которая показывает количество элементов, в файл news.php комплексного компонента. Перед вызовом компонента news.list, проверяю количество (-1 — страница инфоблока, 0 — нет результатов и т.п.).
Не знаю, насколько это «чистый» подход.
*Не строки фильтрации, а переменную FORM_ACTION из массива $arResult шаблона компонента умного фильтра. Так как не знаю почему, но $_REQUEST[«SMART_FILTER_PATH»] показывал кэшированную версию при возвращении на главный список элементов
Добрый вечер, оказывается при использовании умного фильтра в компоненте новостей (для раздела афиши), не показывает результаты дальнейшей фильтрации.
Порядок действий:
1. Тыкаю на автора новости из списка по очереди, всплывает окно с количеством результатов.
2. Нажимаю на «Показать» результаты фильтрации
3. Снова выбираю автора новости (даже зная что точно есть результаты) ничего не происходит и кнопка «Показать» становится в недоступной (disabled)
Но при этом, если вручную вводить ссылку фильтрации в адресную строку, все работает
Alex, подскажите, пожалуйста, из-за чего в умном фильтре нет ни одного свойства для фильтрации, и из-за чего не применяется настройка url-rewrite? Вместо этого клик по кнопке «Показать» в умном фильтре отправляет на «?set_filter=%CF%EE%EA%E0%E7%E0%F2%FC»
Из вариантов, что фильтре не включена настройка subsection . А все свойства привязаны категориям.
Посмотрите тут видео https://www.youtube.com/watch?v=5jKSUZUESf0&list=PLjStXO1Yptu1Z01KqGgNDdzWUnoV1chxf может чем поможет