Как с помощью «Умного фильтра» и catalog.section вывести несколько товаров из разных разделов?

Ссылка скопирована
1 ответ

Хочу в catalog.section вывести несколько товаров из разных разделов. У меня есть массив с id элементов. И массив с id их раздела.
В префильтре фильтрую по элементам.
$GLOBALS['presect'] = array("ID"=>$arrFiltrId);
в фильтре id раздела ставлю- первый элемент массива, как я понял по другому никак:
"SECTION_ID" => $sectId[0]

bitrix:catalog.smart.filter

<?$APPLICATION->IncludeComponent( 	"bitrix:catalog.smart.filter",  	"main2",  	array( 		"COMPONENT_TEMPLATE" => "main2", 		"IBLOCK_TYPE" => "aspro_next_catalog", 		"IBLOCK_ID" => "18", 		"SECTION_ID" => $sectId[0], 		"SECTION_CODE" => "", 		"PREFILTER_NAME" => "presect",  		"FILTER_NAME" => "smartPreFilter", 		"HIDE_NOT_AVAILABLE" => "N", 		"TEMPLATE_THEME" => "blue", 		"FILTER_VIEW_MODE" => "vertical", 		"DISPLAY_ELEMENT_COUNT" => "Y", 		"SEF_MODE" => "N", 		"CACHE_TYPE" => "N", 		"CACHE_TIME" => "36000000", 		"CACHE_GROUPS" => "Y", 		"SAVE_IN_SESSION" => "N", 		"INSTANT_RELOAD" => "Y", 		"PAGER_PARAMS_NAME" => "arrPager", 		"CONVERT_CURRENCY" => "Y", 		"XML_EXPORT" => "N", 		"SECTION_TITLE" => "-", 		"SECTION_DESCRIPTION" => "-", 		"POPUP_POSITION" => "left", 		"SEF_RULE" => "/catalog/#SECTION_ID#/filter/#SMART_FILTER_PATH#/apply/", 		"SECTION_CODE_PATH" => "", 		"SMART_FILTER_PATH" => $_REQUEST["SMART_FILTER_PATH"], 		"CURRENCY_ID" => "RUB", 		"COMPOSITE_FRAME_MODE" => "A", 		"COMPOSITE_FRAME_TYPE" => "AUTO", 		"PRICE_CODE" => array( 			0 => "Интернет магазин (Магазин)", 		),  	false );?>

<?$APPLICATION->IncludeComponent( "bitrix:catalog.smart.filter", "main2", array( "COMPONENT_TEMPLATE" => "main2", "IBLOCK_TYPE" => "aspro_next_catalog", "IBLOCK_ID" => "18", "SECTION_ID" => $sectId[0], "SECTION_CODE" => "", "PREFILTER_NAME" => "presect", "FILTER_NAME" => "smartPreFilter", "HIDE_NOT_AVAILABLE" => "N", "TEMPLATE_THEME" => "blue", "FILTER_VIEW_MODE" => "vertical", "DISPLAY_ELEMENT_COUNT" => "Y", "SEF_MODE" => "N", "CACHE_TYPE" => "N", "CACHE_TIME" => "36000000", "CACHE_GROUPS" => "Y", "SAVE_IN_SESSION" => "N", "INSTANT_RELOAD" => "Y", "PAGER_PARAMS_NAME" => "arrPager", "CONVERT_CURRENCY" => "Y", "XML_EXPORT" => "N", "SECTION_TITLE" => "-", "SECTION_DESCRIPTION" => "-", "POPUP_POSITION" => "left", "SEF_RULE" => "/catalog/#SECTION_ID#/filter/#SMART_FILTER_PATH#/apply/", "SECTION_CODE_PATH" => "", "SMART_FILTER_PATH" => $_REQUEST["SMART_FILTER_PATH"], "CURRENCY_ID" => "RUB", "COMPOSITE_FRAME_MODE" => "A", "COMPOSITE_FRAME_TYPE" => "AUTO", "PRICE_CODE" => array( 0 => "Интернет магазин (Магазин)", ), false );?>

bitrix:catalog.section

<?$APPLICATION->IncludeComponent(                                     "bitrix:catalog.section",                                     $display,                                     array(                                         "ACTION_VARIABLE" => "action",                                         "ADD_PICT_PROP" => "MORE_PHOTO",                                         "ADD_PROPERTIES_TO_BASKET" => "Y",                                         "ADD_SECTIONS_CHAIN" => "N",                                         "ADD_TO_BASKET_ACTION" => "ADD",                                         "AJAX_MODE" => "N",                                         "AJAX_OPTION_ADDITIONAL" => "",                                         "AJAX_OPTION_HISTORY" => "N",                                         "AJAX_OPTION_JUMP" => "N",                                         "AJAX_OPTION_STYLE" => "Y",                                         "BASKET_URL" => "/personal/cart/",                                         "BROWSER_TITLE" => "-",                                         "CACHE_FILTER" => "N",                                         "CACHE_GROUPS" => "Y",                                         "CACHE_TIME" => "36000000",                                         "CACHE_TYPE" => "N",                                         "COMPONENT_TEMPLATE" => "catalog_block_custom",                                         "CONVERT_CURRENCY" => "N",                                         "DETAIL_URL" => "",                                         "DISPLAY_BOTTOM_PAGER" => "Y",                                         "DISPLAY_TOP_PAGER" => "N",                                         "ELEMENT_SORT_FIELD" => "name",                                         "ELEMENT_SORT_FIELD2" => "shows",                                         "ELEMENT_SORT_ORDER" => "asc",                                         "ELEMENT_SORT_ORDER2" => "asc",                                         "FILTER_NAME" => "smartPreFilter",                                         "HIDE_NOT_AVAILABLE" => "Y",                                         "IBLOCK_ID" => "18",                                         "IBLOCK_TYPE" => "aspro_next_catalog",                                         "IBLOCK_TYPE_ID" => "catalog",                                         "INCLUDE_SUBSECTIONS" => "Y",                                         "LABEL_PROP" => array(                                             0 => "",                                         ),                                         "LINE_ELEMENT_COUNT" => "3",                                         "MESSAGE_404" => "",                                         "MESS_BTN_ADD_TO_BASKET" => "В корзину",                                         "MESS_BTN_BUY" => "Купить",                                         "MESS_BTN_DETAIL" => "Подробнее",                                         "MESS_BTN_SUBSCRIBE" => "Подписаться",                                         "MESS_NOT_AVAILABLE" => "Нет в наличии",                                         "META_DESCRIPTION" => "-",                                         "META_KEYWORDS" => "-",                                         "OFFERS_CART_PROPERTIES" => array(                                             0 => "COLOR_REF",                                             1 => "SIZES_SHOES",                                             2 => "SIZES_CLOTHES",                                         ),                                         "OFFERS_FIELD_CODE" => array(                                             0 => "",                                             1 => "",                                         ),                                         "OFFERS_LIMIT" => "5",                                         "OFFERS_PROPERTY_CODE" => array(                                             0 => "",                                             1 => "",                                         ),                                         "OFFERS_SORT_FIELD" => "shows",                                         "OFFERS_SORT_FIELD2" => "shows",                                         "OFFERS_SORT_ORDER" => "asc",                                         "OFFERS_SORT_ORDER2" => "asc",                                         "OFFER_ADD_PICT_PROP" => "-",                                         "OFFER_TREE_PROPS" => array(                                             0 => "COLOR_REF",                                             1 => "SIZES_SHOES",                                             2 => "SIZES_CLOTHES",                                         ),                                         "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" => "arrows",                                         "PAGER_TITLE" => "Товары",                                         "PAGE_ELEMENT_COUNT" => "60",                                         "PARTIAL_PRODUCT_PROPERTIES" => "Y",                                         "PRICE_CODE" => array(                                             0 => "Интернет магазин (Магазин)",                                         ),                                         "PRICE_VAT_INCLUDE" => "Y",                                         "PRODUCT_DISPLAY_MODE" => "Y",                                         "PRODUCT_ID_VARIABLE" => "id",                                         "PRODUCT_PROPERTIES" => "",                                         "PRODUCT_PROPS_VARIABLE" => "prop",                                         "PRODUCT_QUANTITY_VARIABLE" => "",                                         "PRODUCT_SUBSCRIPTION" => "N",                                         "PROPERTY_CODE" => array(                                             0 => "NEWPRODUCT",                                          ), 										"SECTION_CODE" => "", 										"SECTION_ID_VARIABLE" => "SECTION_ID",                                         "SECTION_URL" => "",                                         "SECTION_USER_FIELDS" => array(                                             0 => "UF_SECTION_DESCR",                                             1 => "UF_SECTION_TEMPLATE",                                             2 => "UF_TIZERS",                                             3 => "UF_POPULAR",                                             4 => "UF_CATALOG_ICON",                                             5 => "UF_OFFERS_TYPE",                                             6 => "UF_ELEMENT_DETAIL",                                             7 => "UF_TABLE_SIZES",                                             8 => "UF_FILTER_VIEW",                                             9 => "UF_REGION",                                             10 => "UF_SHORT_PROPERTIES",                                             11 => "UF_ANALOG_PROPERTY_CODES",                                             12 => "UF_INDEX_NUMBER",                                             13 => "",                                         ),                                                                                  "USE_FILTER" => "Y",                                         "TITLE_BLOCK" => "",                                         "SHOW_MEASURE" => "Y", 										"SECTION_ID" =>$sectId[0],                                         "ELEMENT_SORT_FIELD" => $sort,                                         "PAGE_ELEMENT_COUNT" => $pageCount,                                           "INCLUDE_SUBSECTIONS" => "Y",                                         "SHOW_ALL_WO_SECTION" => "Y",                                     ),                                     false                                 );?>

<?$APPLICATION->IncludeComponent( "bitrix:catalog.section", $display, array( "ACTION_VARIABLE" => "action", "ADD_PICT_PROP" => "MORE_PHOTO", "ADD_PROPERTIES_TO_BASKET" => "Y", "ADD_SECTIONS_CHAIN" => "N", "ADD_TO_BASKET_ACTION" => "ADD", "AJAX_MODE" => "N", "AJAX_OPTION_ADDITIONAL" => "", "AJAX_OPTION_HISTORY" => "N", "AJAX_OPTION_JUMP" => "N", "AJAX_OPTION_STYLE" => "Y", "BASKET_URL" => "/personal/cart/", "BROWSER_TITLE" => "-", "CACHE_FILTER" => "N", "CACHE_GROUPS" => "Y", "CACHE_TIME" => "36000000", "CACHE_TYPE" => "N", "COMPONENT_TEMPLATE" => "catalog_block_custom", "CONVERT_CURRENCY" => "N", "DETAIL_URL" => "", "DISPLAY_BOTTOM_PAGER" => "Y", "DISPLAY_TOP_PAGER" => "N", "ELEMENT_SORT_FIELD" => "name", "ELEMENT_SORT_FIELD2" => "shows", "ELEMENT_SORT_ORDER" => "asc", "ELEMENT_SORT_ORDER2" => "asc", "FILTER_NAME" => "smartPreFilter", "HIDE_NOT_AVAILABLE" => "Y", "IBLOCK_ID" => "18", "IBLOCK_TYPE" => "aspro_next_catalog", "IBLOCK_TYPE_ID" => "catalog", "INCLUDE_SUBSECTIONS" => "Y", "LABEL_PROP" => array( 0 => "", ), "LINE_ELEMENT_COUNT" => "3", "MESSAGE_404" => "", "MESS_BTN_ADD_TO_BASKET" => "В корзину", "MESS_BTN_BUY" => "Купить", "MESS_BTN_DETAIL" => "Подробнее", "MESS_BTN_SUBSCRIBE" => "Подписаться", "MESS_NOT_AVAILABLE" => "Нет в наличии", "META_DESCRIPTION" => "-", "META_KEYWORDS" => "-", "OFFERS_CART_PROPERTIES" => array( 0 => "COLOR_REF", 1 => "SIZES_SHOES", 2 => "SIZES_CLOTHES", ), "OFFERS_FIELD_CODE" => array( 0 => "", 1 => "", ), "OFFERS_LIMIT" => "5", "OFFERS_PROPERTY_CODE" => array( 0 => "", 1 => "", ), "OFFERS_SORT_FIELD" => "shows", "OFFERS_SORT_FIELD2" => "shows", "OFFERS_SORT_ORDER" => "asc", "OFFERS_SORT_ORDER2" => "asc", "OFFER_ADD_PICT_PROP" => "-", "OFFER_TREE_PROPS" => array( 0 => "COLOR_REF", 1 => "SIZES_SHOES", 2 => "SIZES_CLOTHES", ), "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" => "arrows", "PAGER_TITLE" => "Товары", "PAGE_ELEMENT_COUNT" => "60", "PARTIAL_PRODUCT_PROPERTIES" => "Y", "PRICE_CODE" => array( 0 => "Интернет магазин (Магазин)", ), "PRICE_VAT_INCLUDE" => "Y", "PRODUCT_DISPLAY_MODE" => "Y", "PRODUCT_ID_VARIABLE" => "id", "PRODUCT_PROPERTIES" => "", "PRODUCT_PROPS_VARIABLE" => "prop", "PRODUCT_QUANTITY_VARIABLE" => "", "PRODUCT_SUBSCRIPTION" => "N", "PROPERTY_CODE" => array( 0 => "NEWPRODUCT", ), "SECTION_CODE" => "", "SECTION_ID_VARIABLE" => "SECTION_ID", "SECTION_URL" => "", "SECTION_USER_FIELDS" => array( 0 => "UF_SECTION_DESCR", 1 => "UF_SECTION_TEMPLATE", 2 => "UF_TIZERS", 3 => "UF_POPULAR", 4 => "UF_CATALOG_ICON", 5 => "UF_OFFERS_TYPE", 6 => "UF_ELEMENT_DETAIL", 7 => "UF_TABLE_SIZES", 8 => "UF_FILTER_VIEW", 9 => "UF_REGION", 10 => "UF_SHORT_PROPERTIES", 11 => "UF_ANALOG_PROPERTY_CODES", 12 => "UF_INDEX_NUMBER", 13 => "", ), "USE_FILTER" => "Y", "TITLE_BLOCK" => "", "SHOW_MEASURE" => "Y", "SECTION_ID" =>$sectId[0], "ELEMENT_SORT_FIELD" => $sort, "PAGE_ELEMENT_COUNT" => $pageCount, "INCLUDE_SUBSECTIONS" => "Y", "SHOW_ALL_WO_SECTION" => "Y", ), false );?>

Дополнительно:

Первое: если у Вас есть ID элементов, зачем вообще указывать раздел? Ставьте везде, где надо "SECTION_ID" =>0, "INCLUDE_SUBSECTIONS" => "Y",
Если нужно фильтровать и по разделам, укажите их в том же фильтре

$presect=['IBLOCK_SECTION_ID' => $sectId, "ID"=>$arrFiltrId];

$presect=['IBLOCK_SECTION_ID' => $sectId, "ID"=>$arrFiltrId];

Кстати, не очень удачные названия для переменных: $sectId - предположительно, здесь должно быть число, единственный айдишник. $sectIdList лучше. И можно не сокращать, современные редакторы кода умеют дополнять на лету; $sectionIdList читается легче, а код пишется для людей.
$arrFiltrId - аналогично, я бы предположил, что здесь Id какой-то сущности, обозначенной как $arrFiltr. И вот эти дурацкие приставки "arr" из псевдовенгерской нотации - выкиньте их. Битриксоиды не могут, они уже насквозь испорчены этим, а Вам ещё не поздно исправиться.
$elementIdList читабельнее. ( я даже не против $tovarIdList , хоть и не сторонник русификации )

  • Михаил Ливач, Спасибо за ответ. К сожалению, не помогло. У меня почему то умный фильтр перестал фильтровать по свойствам и catalog. section не отображает товары.
  • Cyber-Pavel, тогда, честно говоря, я не понимаю, что делать с разделами, если они не часть одного поддерева.
    Жаль, что не помогло, но такие подлянки с Битриксом на каждом шагу...
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Юрий Linux Ответ

    Для вывода нескольких товаров из разных разделов с помощью «Умного фильтра» и функции catalog.section вам необходимо использовать параметр FILTER, который позволит выбрать нужные разделы. Вот пример кода на языке PHP:

     1, // ID инфоблока
        "SECTION_ID" => 0, // ID раздела (можно не указывать)
        "FILTER_NAME" => "arrFilter", // название переменной фильтра
        "INCLUDE_SUBSECTIONS" => "Y", // включать товары из подразделов
        "SHOW_ALL_WO_SECTION" => "Y", // показывать все товары без раздела
        "PAGE_ELEMENT_COUNT" => 5, // количество товаров на странице
        "CACHE_TYPE" => "A", // тип кеширования
        "CACHE_TIME" => 36000000, // время кеширования
    );
     
    $arrFilter = array(
        "LOGIC" => "OR", // логика фильтрации (ИЛИ)
        array("SECTION_ID" => 10), // ID раздела 1
        array("SECTION_ID" => 20), // ID раздела 2
    );
     
    $arParams["arrFilter"] = $arrFilter;
     
    $APPLICATION->IncludeComponent(
        "bitrix:catalog.section",
        "",
        $arParams
    );
    ?>

    1, // ID инфоблока "SECTION_ID" => 0, // ID раздела (можно не указывать) "FILTER_NAME" => "arrFilter", // название переменной фильтра "INCLUDE_SUBSECTIONS" => "Y", // включать товары из подразделов "SHOW_ALL_WO_SECTION" => "Y", // показывать все товары без раздела "PAGE_ELEMENT_COUNT" => 5, // количество товаров на странице "CACHE_TYPE" => "A", // тип кеширования "CACHE_TIME" => 36000000, // время кеширования ); $arrFilter = array( "LOGIC" => "OR", // логика фильтрации (ИЛИ) array("SECTION_ID" => 10), // ID раздела 1 array("SECTION_ID" => 20), // ID раздела 2 ); $arParams["arrFilter"] = $arrFilter; $APPLICATION->IncludeComponent( "bitrix:catalog.section", "", $arParams ); ?>

    В данном примере мы задаем параметры компонента catalog.section, указываем ID инфоблока, задаем FILTER_NAME для фильтрации товаров из разных разделов. В массиве arrFilter мы указываем логику "OR" (ИЛИ) и перечисляем ID разделов, из которых нужно вывести товары.

    После подключения компонента и передачи всех необходимых параметров, на странице будут выведены товары из разделов с ID 10 и 20. Вы можете добавить или изменить условия фильтрации, чтобы выбирать нужные разделы и товары.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно