Создание меню категорий продуктов из 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));

?>

Комментарии

Популярные сообщения из этого блога

Bitrix: кнопка добавить в корзину

Битрикс: какого х*я ты ищешь в неактивных разделах

Битрикс: highloadblock значения в свойстве список