Всем привет! Долго ломаю голову, надеюсь хоть здесь мне смогут помочь..
Моя задача в следующем: На странице каталога нужно вывести разделы и подразделы каталога.
Структура следующая:
- Главный раздел
-- Подраздел
--- Дочерний раздел
--- Дочерний раздел
-- Подраздел
--- Дочерний раздел
Т.е. переходя на страницу "главного" раздела, отображается заголовок этого раздела и подразделы с их дочерними. И так в каждом "главном" разделе.
Написал для этого функцию:
function func_sectionList($ar_Items)
{
$req = $_REQUEST["SECTION_ID"];
foreach ($ar_Items as $ar_Value)
{
$arItemR = CFile::GetFileArray($ar_Value['PICTURE']);
$count = CIBlockElement::GetList(
array(),
array(
'IBLOCK_ID'=>$ar_Value['IBLOCK_ID'],
'SECTION_ID'=>$ar_Value['SECTION_ID']
),
array()
);
$id = $ar_Value['IBLOCK_SECTION_ID'].'/';
$by_id = $ar_Value['IBLOCK_SECTION_ID'];
$rsSections = CIBlockSection::GetByID($by_id);
$arSection = $rsSections->Fetch();
$id_main = $arSection['IBLOCK_SECTION_ID'].'/';
if( count($ar_Value['SUB_SECTION']) > 0 )
{
if ($ar_Value['DEPTH_LEVEL'] == 2 && $id == $req){
echo '<div class="column-catalog-wrapper">';
echo '<div class="title-column-catalog"> ';
echo '<h2><a href="'.$ar_Value['SECTION_PAGE_URL'].'">'.$ar_Value['NAME'].'</a></h2>';
echo '</div>';
echo '<div class="column-catalog">'; ?>
<div class="thumb-column-catalog">
<img src="<?=$arItemR["SRC"];?>" alt="">
<span class="count-column"><? echo $count; ?></span>
</div>
<? echo '<div class="spisok-column-cat"><ul>';
}
echo func_sectionList($ar_Value['SUB_SECTION']);
}
else if ($ar_Value['DEPTH_LEVEL'] == 3 && $id_main == $req )
{
echo '<li><a href="'.$ar_Value['SECTION_PAGE_URL'].'">'.$ar_Value['NAME'].'</a></li>';
}
}
echo '</ul></div></div></div>';
}
Она выводит все на странице в нужной обертке, сохраняя необходимую верстку.
Выглядит это так:
Сама верстка выглядит так:
<div class="content-wrapper">
<div class="wrapper-catalog">
<div class="search-main">
<input type="text" class="input-main-search">
<input type="submit" value="искать" class="submit-main-search">
</div>
<div class="column-catalog-wrapper">
<div class="title-column-catalog">
<a href="">Обнаружение - измерение</a>
<div class="desc-cat"></div>
</div>
<div class="column-catalog">
<div class="thumb-column-catalog">
<img src="./images/1.jpg" alt="">
<span class="count-column">3 640</span>
</div>
<div class="spisok-column-cat">
<ul>
<li><a href="">Поток, измерения давления и уровня</a></li>
<li><a href="">Температура и влажность</a></li>
<li><a href="">Измерение установки</a></li>
<li><a href="">Измерение силы</a></li>
<li><a href="">Оптические и акустические измерения</a></li>
<li><a href="">Электрические измерение</a></li>
<li><a href="">Аналитическое оборудование</a></li>
<li><a href="">Метрологии и оборудование для испытаний</a></li>
<li><a href="">Проверка и мониторинг</a></li>
<li><a href="">Лабораторное оборудование</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
В файле list.php вызывается компонент catalog.section.list, в который передается ID текущего раздела в SECTION_ID. В компоненте и вызывается моя функция.
Вызов функции выглядит так:
<div class="content-wrapper">
<div class="wrapper-catalog">
<?
echo func_sectionList($ar_SectionList);
?>
</div>
</div>
Дело в том, что все работает отлично, если создан 1 "главный" раздел. При создании еще одного или нескольких, верстка отображается нормально только в одном из разделов, в остальных такое чувство как будто функция вызывается помимо компонента. Структура которую создает функция находится снаружи структуры в которой она вызывается. Я так полагаю вызываются лишние закрывающие div. Много вариантов испробовал, ничего не помогает. Не пойму почему в одном "главном" разделе все отображается корректно, в остальных нет...
Выглядит это так: