Создание меню категорий продуктов из catalog.section.list
Сначала формируется общий список со вложенными списками "под-категорий", после чего рекурсивно выводится при помощи функции show_list, а check_childe_link функция служит для проверки не является ли категория активной.
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? $menu_list = array("list" => array()); foreach ($arResult["SECTIONS"] as $key => $arItem) { $container =& $menu_list; for ($i=0; $i < ($arItem["DEPTH_LEVEL"] - 1); $i++) { $container =& $container["list"][count($container["list"]) - 1]; if (!isset($container["list"])) $container["list"] = array(); } array_push($container["list"], array("CODE" => $arItem["CODE"], "NAME" => $arItem["NAME"])); } function check_childe_link($childrens, $url) { foreach ($childrens as $child) { if (strpos($url, $child["CODE"]) !== false) return true; if (isset($child["list"])) if (check_childe_link($child["list"], $url)) return true; } return false; } function show_list($container, $url) { echo '<ul class="side-submenu">'; foreach ($container as $item) { echo '<li class="side-submenu-item">'; echo '<a href="/collection/'.$item["CODE"].'/">'.$item["NAME"].'</a>'; if (isset($item["list"]) && check_childe_link($item["list"], $url)) show_list($item["list"], $url); echo '</li>'; } echo '</ul>'; } show_list($menu_list["list"], $APPLICATION->GetCurPage(false)); ?>
Комментарии
Отправить комментарий