Есть каталог товаров на базе стандартного компонента каталога, сделан вывод изображений разделов и их описаний, настроено отображение товара в последнем вложенном разделе.
Вопрос: Как сделать отображение умного фильтра в зависимости от вложенности раздела, то есть чтобы умный фильтр не выводился в каждом разделе, а выводился только в последнем, там где выводится товар?
Как я понимаю необходимо перед выводом умного фильтра поставить условие, что то вроде "if($arSelect["SECTION"]["DEPTH_LEVEL"] > 2){ }"
правим файл:
/bitrix/templates/________/components/bitrix/catalog/.default/section.php
После правки фильтр перестает выводится, проверяем значение через:
Пусто.
Каким образом можно вытащить значение уровня вложенности раздела из массива и можно ли привязаться к какому то другому параметру, чтобы решить задачу?
Заранее благодарю за ответ.
Вопрос: Как сделать отображение умного фильтра в зависимости от вложенности раздела, то есть чтобы умный фильтр не выводился в каждом разделе, а выводился только в последнем, там где выводится товар?
Как я понимаю необходимо перед выводом умного фильтра поставить условие, что то вроде "if($arSelect["SECTION"]["DEPTH_LEVEL"] > 2){ }"
правим файл:
/bitrix/templates/________/components/bitrix/catalog/.default/section.php
Код |
---|
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? if($arSelect["SECTION"]["DEPTH_LEVEL"] > 2){ if (CModule::IncludeModule("iblock") && COption::GetOptionString("eshop", "catalogSmartFilter", "Y", SITE_ID)=="Y") { $arFilter = array( "ACTIVE" => "Y", "GLOBAL_ACTIVE" => "Y", "IBLOCK_ID" => $arParams["IBLOCK_ID"], ); if(strlen($arResult["VARIABLES"]["SECTION_CODE"])>0) { $arFilter["=CODE"] = $arResult["VARIABLES"]["SECTION_CODE"]; } elseif($arResult["VARIABLES"]["SECTION_ID"]>0) { $arFilter["ID"] = $arResult["VARIABLES"]["SECTION_ID"]; } $obCache = new CPHPCache; if($obCache->InitCache(36000, serialize($arFilter), "/iblock/catalog")) { $arCurSection = $obCache->GetVars(); } else { $arCurSection = array(); $dbRes = CIBlockSection::GetList(array(), $arFilter, false, array("ID")); $dbRes = new CIBlockResult($dbRes); if(defined("BX_COMP_MANAGED_CACHE")) { global $CACHE_MANAGER; $CACHE_MANAGER->StartTagCache("/iblock/catalog"); if ($arCurSection = $dbRes->GetNext()) { $CACHE_MANAGER->RegisterTag("iblock_id_".$arParams["IBLOCK_ID"]); } $CACHE_MANAGER->EndTagCache(); } else { if(!$arCurSection = $dbRes->GetNext()) $arCurSection = array(); } $obCache->EndDataCache($arCurSection); } $smartFilterTemplate = COption::GetOptionString("main", "wizard_template_id", "eshop_vertical", SITE_ID) == "eshop_horizontal" ? "sidebar" : ""; ?> <?$APPLICATION->IncludeComponent("bitrix:catalog.smart.filter", ".default", array( "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"], "IBLOCK_ID" => $arParams["IBLOCK_ID"], "SECTION_ID" => $arCurSection["ID"], "FILTER_NAME" => "arrFilter", "CACHE_TYPE" => "A", "CACHE_TIME" => "36000000", "CACHE_GROUPS" => "Y", "SAVE_IN_SESSION" => "N", "INSTANT_RELOAD" => "N", "PRICE_CODE" => array( 0 => "BASE", ) ), false, array( "ACTIVE_COMPONENT" => "Y" ) );?> <? } } ?> |
Код |
---|
<pre> <?php print_r ($arSelect["SECTION"]["DEPTH_LEVEL"]); ?> </pre> |
Каким образом можно вытащить значение уровня вложенности раздела из массива и можно ли привязаться к какому то другому параметру, чтобы решить задачу?
Заранее благодарю за ответ.