Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Я написал простой result_modifier.php, который подкладываю в директорию шаблона:
В итоге мы имеем ключ CHILDREN у пункта меню, если у него имеются дочерние пункты меню, и соответственно дочерние у дочерних (we need to go deeper). Обычное и логичное разветвлённое иерархичное меню.
Вот код в файле:
UPD 11.08.2011: Исправил имя ключа children на CHILDREN, совсем забыл про единство стиля.
Назад в раздел
Наверх
то ждем ваше обращение в нашей службе тех поддержки.
Иерархичное меню и result_modifier
Приветствую! Наверное уже есть множество способов решения данной задачи, но я решил сделать новый велосипед. Зачем? Не знаю. Захотел сделать простое и кроткое решение. Пожалуй не только мне досаждает то, что у Битрикса стандартный шаблон модуля меню почему-то выдаёт массив элементов одним уровнем и вложенность определяется только по ключу DEPTH_LEVEL. Приходится выкручиваться всякими финтами с подстановкой </li></ul> в начале новой итерации цикла, но это эстетически никак не доставляет, полагаю, что никому.Я написал простой result_modifier.php, который подкладываю в директорию шаблона:
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$menuList = array();
$lev = 0;
$lastInd = 0;
$parents = array();
foreach ($arResult as $arItem) {
$lev = $arItem['DEPTH_LEVEL'];
if ($arItem['IS_PARENT']) {
$arItem['CHILDREN'] = array();
}
if ($lev == 1) {
$menuList[] = $arItem;
$lastInd = count($menuList)-1;
$parents[$lev] = &$menuList[$lastInd];
} else {
$parents[$lev-1]['CHILDREN'][] = $arItem;
$lastInd = count($parents[$lev-1]['CHILDREN'])-1;
$parents[$lev] = &$parents[$lev-1]['CHILDREN'][$lastInd];
}
}
$arResult = $menuList; |
В итоге мы имеем ключ CHILDREN у пункта меню, если у него имеются дочерние пункты меню, и соответственно дочерние у дочерних (we need to go deeper). Обычное и логичное разветвлённое иерархичное меню.
Вот код в файле:
UPD 11.08.2011: Исправил имя ключа children на CHILDREN, совсем забыл про единство стиля.
Назад в раздел
Подписаться на новые материалы раздела:
Загрузка...
Наверх