Вопрос: Как правильно применить фильтрацию в catalog.section для вывода элементов с одинаковым свойством?
Ситуация:
Я хочу вывести все товары по свойству "Лучшее", "В наличии", "Хит" и тп. В общем, реализую секцию "Популярные товары" с меню-вкладками и выводом товаров по нужному свойству. Пример этой секции можно посмотреть
Нужных примеров я не нашел, а может и не там искал.
Наработки:
1. Вызов компонента catalog.section. В свойстве PROPS_TABS вывожу ID полей свойства информационного блока (тип "список").
Код |
---|
<?$APPLICATION->IncludeComponent( "bitrix:catalog.section", "section-slider", array( // ..... // "FILTER_NAME" => "arrFilter", "HIDE_NOT_AVAILABLE" => "N", "HIDE_NOT_AVAILABLE_OFFERS" => "N", "IBLOCK_ID" => "2", "IBLOCK_TYPE" => "catalog", // ..... // "OFFERS_LIMIT" => "5", "PAGER_BASE_LINK_ENABLE" => "N", "PAGER_DESC_NUMBERING" => "N", "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000", "PAGER_SHOW_ALL" => "N", "PAGER_SHOW_ALWAYS" => "N", "PAGER_TEMPLATE" => ".default", "PAGER_TITLE" => "Товары", "PAGE_ELEMENT_COUNT" => "20", "PARTIAL_PRODUCT_PROPERTIES" => "N", "PRICE_CODE" => array( ), "PRICE_VAT_INCLUDE" => "Y", "PRODUCT_BLOCKS_ORDER" => "price,props,sku,quantityLimit,quantity,buttons", "PRODUCT_ID_VARIABLE" => "id", "PRODUCT_PROPS_VARIABLE" => "prop", /*Я записал ID свойств списка, с их помощью и планирую выводить меню со вкладками В наличии, Хиты, Акции и Наши предложения*/ "PROPS_TABS" => [ 0 => "76", //В наличии 1 => "78", //хит продаж 2 => "82", //Акция 3 => "81", //Наше предложение ], "PRODUCT_QUANTITY_VARIABLE" => "quantity", "PRODUCT_ROW_VARIANTS" => "[{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false},{'VARIANT':'2','BIG_DATA':false}]", "PRODUCT_SUBSCRIPTION" => "Y", "RCM_PROD_ID" => $_REQUEST["PRODUCT_ID"], "RCM_TYPE" => "personal", "SECTION_ID" => $_REQUEST["SECTION_ID"], "SECTION_ID_VARIABLE" => "SECTION_ID", "SECTION_URL" => "", "SECTION_USER_FIELDS" => array( 0 => "", 1 => "", ), // ..... // "COMPONENT_TEMPLATE" => "section-slider", "CUSTOM_FILTER" => "{\"CLASS_ID\":\"CondGroup\",\"DATA\":{\"All\":\"AND\",\"True\":\"True\"},\"CHILDREN\":[]}", "OFFERS_SORT_FIELD" => "sort", "OFFERS_SORT_ORDER" => "asc", "OFFERS_SORT_FIELD2" => "id", "OFFERS_SORT_ORDER2" => "desc", "PROPERTY_CODE_MOBILE" => array( ), "OFFERS_FIELD_CODE" => array( 0 => "", 1 => "", ), "SLIDER_INTERVAL" => "3000", "SLIDER_PROGRESS" => "N", "PRODUCT_DISPLAY_MODE" => "N", "ADD_PICT_PROP" => "-", "LABEL_PROP" => array( ) ), false );?> |
В плане шаблона я, к сожалению, ничем похвастать не могу. Это практически тот же ".default", только к нему прикручен слик-слайдер. Ничего больше.
1. Фильтр всех товаров по ID свойств из массива с arParams['PROPS_TABS'], на их основе я вывел свои вкладки (это содержимое в result_modifier). В шаблоне их вывожу форычем.
Код |
---|
<? if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die(); /** * @var CBitrixComponentTemplate $this * @var CatalogSectionComponent $component */ $component = $this->getComponent(); $arParams = $component->applyTemplateModifications(); ?> <? $arResult['TABS'] = array(); $tabsProps = $arParams['PROPS_TABS']; if (CModule::IncludeModule("iblock")){ $arResult['TABS_GROUP'] = array(); foreach($tabsProps as $id_tab) { $arResult['TABS_GROUP'][] = CIBlockPropertyEnum::GetByID($id_tab); } } ?> |