Нужно элементы каталога разбить на группы:
Сначала выводятся элементы со свойством типа "список" - SERIAL со значением условно "ONE"
Потом "TWO", далее "TREE".
Первое что пришло на ум:
Запрашиваем ID текущего раздела
Получаем список всех уникальных значений свойства SPISOK у элементов из раздела с помощью CIBlockElement::GetList и заносим их в фильтр
В массиве получаем все значения и туда же вставляем компонент bitrix:catalog.section
В итоге bitrix:catalog.section выполнится столько раз сколько уникальных значений у свойства SPISOK и мы получаем вывод всех элементов с разбиением на группы.
Но, во первых, мне кажется, что это очень нагружает сервер, во вторых как быть с постраничной навигацией?
Возможно есть второй вариант, еще не опробован:
Можно ли сделать вывод элементов раздела только путем правки шаблона catalog.section, а не как сейчас у меня (правлен файл section.php у catalog)
Сейчас так:
Сначала выводятся элементы со свойством типа "список" - SERIAL со значением условно "ONE"
Потом "TWO", далее "TREE".
Первое что пришло на ум:
Запрашиваем ID текущего раздела
Получаем список всех уникальных значений свойства SPISOK у элементов из раздела с помощью CIBlockElement::GetList и заносим их в фильтр
В массиве получаем все значения и туда же вставляем компонент bitrix:catalog.section
В итоге bitrix:catalog.section выполнится столько раз сколько уникальных значений у свойства SPISOK и мы получаем вывод всех элементов с разбиением на группы.
Но, во первых, мне кажется, что это очень нагружает сервер, во вторых как быть с постраничной навигацией?
Возможно есть второй вариант, еще не опробован:
Можно ли сделать вывод элементов раздела только путем правки шаблона catalog.section, а не как сейчас у меня (правлен файл section.php у catalog)
Сейчас так:
Код |
---|
<? if (CModule::IncludeModule("iblock")): $iblock_id = 8; $my_slider = CIBlockElement::GetList ( Array("CATALOG_QUANTITY" => "ASC"), Array('ACTIVE' => 'Y', "IBLOCK_ID" => $iblock_id, "SECTION_ID" => $arResult["VARIABLES"]["SECTION_ID"], "INCLUDE_SUBSECTIONS" => "Y", "PROPERTY_SERIAL_VALUE" => "", ">=CATALOG_QUANTITY" => 1, "!PROPERTY_SERIAL_VALUE" =>false ), false, false, Array( 'ID', 'NAME', 'CATALOG_PRICE_1', 'CATALOG_GROUP_1', 'CATALOG_QUANTITY', 'PROPERTY_SERIAL' ) ); $serialValues=array(); while($ar_fields = $my_slider->GetNext()) { $serialValues[] = $ar_fields['PROPERTY_SERIAL_VALUE']; } foreach(array_unique($serialValues) as $value){ {?><? echo "СЕРИЯ ".$value;?><? GLOBAL $arrFilter; $arrFilter = array( 'PROPERTY_SERIAL_VALUE' => $value, ); ?> <?$intSectionID = $APPLICATION->IncludeComponent( "bitrix:catalog.section", "brands-carousel-new", array( "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "ELEMENT_SORT_FIELD" => $arParams["ELEMENT_SORT_FIELD"], "ELEMENT_SORT_ORDER" => $arParams["ELEMENT_SORT_ORDER"], "ELEMENT_SORT_FIELD2" => $arParams["ELEMENT_SORT_FIELD2"], "ELEMENT_SORT_ORDER2" => $arParams["ELEMENT_SORT_ORDER2"], "PROPERTY_CODE" => $arParams["LIST_PROPERTY_CODE"], "META_KEYWORDS" => $arParams["LIST_META_KEYWORDS"], "META_DESCRIPTION" => $arParams["LIST_META_DESCRIPTION"], "BROWSER_TITLE" => $arParams["LIST_BROWSER_TITLE"], "SET_LAST_MODIFIED" => $arParams["SET_LAST_MODIFIED"], "INCLUDE_SUBSECTIONS" => $arParams["INCLUDE_SUBSECTIONS"], "BASKET_URL" => $arParams["BASKET_URL"], "ACTION_VARIABLE" => $arParams["ACTION_VARIABLE"], "PRODUCT_ID_VARIABLE" => $arParams["PRODUCT_ID_VARIABLE"], "SECTION_ID_VARIABLE" => $arParams["SECTION_ID_VARIABLE"], "PRODUCT_QUANTITY_VARIABLE" => $arParams["PRODUCT_QUANTITY_VARIABLE"], "PRODUCT_PROPS_VARIABLE" => $arParams["PRODUCT_PROPS_VARIABLE"], "FILTER_NAME" => 'arrFilter', //"FILTER_NAME" => 'arQuantityFilter', "CACHE_TYPE" => $arParams["CACHE_TYPE"], "CACHE_TIME" => $arParams["CACHE_TIME"], "CACHE_FILTER" => $arParams["CACHE_FILTER"], "CACHE_GROUPS" => $arParams["CACHE_GROUPS"], //region if filter is set, meta seo set in button template by bitrix:smart.filter component "SET_TITLE" => (empty($arResult['VARIABLES']['SMART_FILTER_PATH'])?$arParams["SET_TITLE"]:'N'), "SET_BROWSER_TITLE" => (empty($arResult['VARIABLES']['SMART_FILTER_PATH'])?'Y':'N'), "SET_META_KEYWORDS" => (empty($arResult['VARIABLES']['SMART_FILTER_PATH'])?'Y':'N'), "SET_META_DESCRIPTION" => (empty($arResult['VARIABLES']['SMART_FILTER_PATH'])?'Y':'N'), //endregion if filter is set, meta seo set in button template by bitrix:smart.filter component "MESSAGE_404" => $arParams["MESSAGE_404"], "SET_STATUS_404" => $arParams["SET_STATUS_404"], "SHOW_404" => $arParams["SHOW_404"], "FILE_404" => $arParams["FILE_404"], "DISPLAY_COMPARE" => $arParams["USE_COMPARE"], "PAGE_ELEMENT_COUNT" => 600, "LINE_ELEMENT_COUNT" => $arParams["LINE_ELEMENT_COUNT"], "PRICE_CODE" => $arParams["PRICE_CODE"], "USE_PRICE_COUNT" => $arParams["USE_PRICE_COUNT"], "SHOW_PRICE_COUNT" => $arParams["SHOW_PRICE_COUNT"], "PRICE_VAT_INCLUDE" => $arParams["PRICE_VAT_INCLUDE"], "USE_PRODUCT_QUANTITY" => $arParams['USE_PRODUCT_QUANTITY'], "ADD_PROPERTIES_TO_BASKET" => (isset($arParams["ADD_PROPERTIES_TO_BASKET"]) ? $arParams["ADD_PROPERTIES_TO_BASKET"] : ''), "PARTIAL_PRODUCT_PROPERTIES" => (isset($arParams["PARTIAL_PRODUCT_PROPERTIES"]) ? $arParams["PARTIAL_PRODUCT_PROPERTIES"] : ''), "PRODUCT_PROPERTIES" => $arParams["PRODUCT_PROPERTIES"], "DISPLAY_TOP_PAGER" => $arParams["DISPLAY_TOP_PAGER"], "DISPLAY_BOTTOM_PAGER" => $arParams["DISPLAY_BOTTOM_PAGER"], "PAGER_TITLE" => $arParams["PAGER_TITLE"], "PAGER_SHOW_ALWAYS" => $arParams["PAGER_SHOW_ALWAYS"], "PAGER_TEMPLATE" => $arParams["PAGER_TEMPLATE"], "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"], "OFFERS_CART_PROPERTIES" => $arParams["OFFERS_CART_PROPERTIES"], "OFFERS_FIELD_CODE" => $arParams["LIST_OFFERS_FIELD_CODE"], "OFFERS_PROPERTY_CODE" => $arParams["LIST_OFFERS_PROPERTY_CODE"], "OFFERS_SORT_FIELD" => $arParams["OFFERS_SORT_FIELD"], "OFFERS_SORT_ORDER" => $arParams["OFFERS_SORT_ORDER"], "OFFERS_SORT_FIELD2" => $arParams["OFFERS_SORT_FIELD2"], "OFFERS_SORT_ORDER2" => $arParams["OFFERS_SORT_ORDER2"], "OFFERS_LIMIT" => $arParams["LIST_OFFERS_LIMIT"], "SECTION_ID" => $arResult["VARIABLES"]["SECTION_ID"], "SECTION_CODE" => $arResult["VARIABLES"]["SECTION_CODE"], "SECTION_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["section"], "DETAIL_URL" => $arResult["FOLDER"].$arResult["URL_TEMPLATES"]["element"], "USE_MAIN_ELEMENT_SECTION" => $arParams["USE_MAIN_ELEMENT_SECTION"], 'CONVERT_CURRENCY' => $arParams['CONVERT_CURRENCY'], 'CURRENCY_ID' => $arParams['CURRENCY_ID'], 'HIDE_NOT_AVAILABLE' => $arParams["HIDE_NOT_AVAILABLE"], 'LABEL_PROP' => $arParams['LABEL_PROP'], 'ADD_PICT_PROP' => $arParams['ADD_PICT_PROP'], 'PRODUCT_DISPLAY_MODE' => $arParams['PRODUCT_DISPLAY_MODE'], 'OFFER_ADD_PICT_PROP' => $arParams['OFFER_ADD_PICT_PROP'], 'OFFER_TREE_PROPS' => $arParams['OFFER_TREE_PROPS'], 'PRODUCT_SUBSCRIPTION' => $arParams['PRODUCT_SUBSCRIPTION'], 'SHOW_DISCOUNT_PERCENT' => $arParams['SHOW_DISCOUNT_PERCENT'], 'SHOW_OLD_PRICE' => $arParams['SHOW_OLD_PRICE'], 'MESS_BTN_BUY' => $arParams['MESS_BTN_BUY'], 'MESS_BTN_ADD_TO_BASKET' => $arParams['MESS_BTN_ADD_TO_BASKET'], 'MESS_BTN_SUBSCRIBE' => $arParams['MESS_BTN_SUBSCRIBE'], 'MESS_BTN_DETAIL' => $arParams['MESS_BTN_DETAIL'], 'MESS_NOT_AVAILABLE' => $arParams['MESS_NOT_AVAILABLE'], 'TEMPLATE_THEME' => (isset($arParams['TEMPLATE_THEME']) ? $arParams['TEMPLATE_THEME'] : ''), "ADD_SECTIONS_CHAIN" => $arParams['ADD_SECTIONS_CHAIN'], 'ADD_TO_BASKET_ACTION' => $basketAction, 'SHOW_CLOSE_POPUP' => isset($arParams['COMMON_SHOW_CLOSE_POPUP']) ? $arParams['COMMON_SHOW_CLOSE_POPUP'] : '', 'COMPARE_PATH' => $arResult['FOLDER'].$arResult['URL_TEMPLATES']['compare'], 'BACKGROUND_IMAGE' => (isset($arParams['SECTION_BACKGROUND_IMAGE']) ? $arParams['SECTION_BACKGROUND_IMAGE'] : ''), 'DISABLE_INIT_JS_IN_COMPONENT' => (isset($arParams['DISABLE_INIT_JS_IN_COMPONENT']) ? $arParams['DISABLE_INIT_JS_IN_COMPONENT'] : ''), 'GROUP_BY_COLORS' => false === strstr($arResult['VARIABLES']['SECTION_CODE_PATH'],'/')?'N':'Y', 'ADVERTISING_IBLOCK_ID' => '28', 'ADVERTISING_MIN_FREQUENCY' => '7', ), $component );?><?}; } endif;?> |