выводим в корень сплошной список. Без использования компонентов списков. Только smart.filter
Все действо происходит в каталоге testurl/index.php. Испытывал urlrwrite
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 |
<?php $arVariables=array(); $arUrlTemplates=array( 'list' => 'my_list', 'fitler' => 'filter', ); $componentPage = CComponentEngine::ParseComponentPath( '/test2/', $arUrlTemplates, $arVariables // почему этот массив пустой ); print_r($_GET); $arVariables=array(); ?> <?$APPLICATION->IncludeComponent( "bitrix:catalog.smart.filter", ".default", array( "COMPONENT_TEMPLATE" => ".default", "IBLOCK_TYPE" => "books", "IBLOCK_ID" => "1", "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", "SEF_RULE" => "/test2/filter/#SMART_FILTER_PATH#/apply/", "SECTION_CODE_PATH" => "", "SMART_FILTER_PATH" => $_REQUEST["SMART_FILTER_PATH"], "CURRENCY_ID" => "RUB", 'SHOW_ALL_WO_SECTION'=>'Y', ), false );?> <?php $arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM"); //$arFilter = Array("IBLOCK_ID"=>IntVal($yvalue), "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y"); $res = CIBlockElement::GetList(Array(), $arrFilter, false, Array("nPageSize"=>50), $arSelect); while($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); echo $arFields['NAME']."<br/>"; } ?> |
правила в urlrewrite
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
4 => array ( 'CONDITION' => '#^/test2/filter/(.+?)/apply/#', 'RULE' => 'SMART_FILTER_PATH=$1', 'ID' => '', 'PATH' => '/testurl/index.php', 'SORT' => 99, ), 5 => array ( 'CONDITION' => '#^/test2/#', 'RULE' => '', 'ID' => '', 'PATH' => '/testurl/index.php', 'SORT' => 100, ), 0 => |
Какова суть этого ? урлрерайт настроенный на фильтры дал нам
$_REQUEST[«SMART_FILTER_PATH»], в котором находится тело фильтра. Так же мне нужно было что бы урл распознавался один, файлик другой. Можно было бы и testurl заменить на test2. Но это нужно было что бы исследовать все.
урлрерайт сделал следующее. оно отлавливает 2 типа урлов. Один это по умолчанию test2 . И второй тип это со строкой фильтра. из за рерайта мы получаем переменную _REQUEST[«SMART_FILTER_PATH»] , готовую для того что бы фильтр её схавал.
По настройкам: выставлены, что бы фильтр наплевательски относился к категориям.
вот подключение в корень каталога
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/