Есть каталог товаров на базе стандартного компонента каталога, сделан вывод изображений разделов и их описаний, настроено отображение товара в последнем вложенном разделе.
Вопрос: Как сделать отображение умного фильтра в зависимости от вложенности раздела, то есть чтобы умный фильтр не выводился в каждом разделе, а выводился только в последнем, там где выводится товар?
Как я понимаю необходимо перед выводом умного фильтра поставить условие, что то вроде "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> |
Каким образом можно вытащить значение уровня вложенности раздела из массива и можно ли привязаться к какому то другому параметру, чтобы решить задачу?
Заранее благодарю за ответ.