[B]
[/B][B]Вопрос:[/B] Как правильно применить фильтрацию в catalog.section для вывода элементов с одинаковым свойством?
[B]Ситуация:[/B]
Я хочу вывести все товары по свойству "Лучшее", "В наличии", "Хит" и тп. В общем, реализую секцию "Популярные товары" с меню-вкладками и выводом товаров по нужному свойству. Пример этой секции можно посмотреть [URL=https://chel.universepro.ru/]на сайте[/URL] в секции "Популярные товары".
Нужных примеров я не нашел, а может и не там искал.
[B]Наработки[/B]:
1. Вызов компонента catalog.section. В свойстве PROPS_TABS вывожу ID полей свойства информационного блока (тип "список"). [CODE] <?$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
);?>
[/CODE]
В плане шаблона я, к сожалению, ничем похвастать не могу. Это практически тот же ".default", только к нему прикручен слик-слайдер. Ничего больше.
1. Фильтр всех товаров по ID свойств из массива с arParams['PROPS_TABS'], на их основе я вывел свои вкладки (это содержимое в result_modifier). В шаблоне их вывожу форычем.
[CODE]<? 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);
}
}
?>
[/CODE]