Я написал простой 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). Обычное и логичное разветвлённое иерархичное меню.
Вот код в файле: http://lotsmanov-va.narod.ru/files/bitrix_blog/menu_levels/result_modifier.txt
UPD 11.08.2011: Исправил имя ключа children на CHILDREN, совсем забыл про единство стиля.
Комментариев нет:
Отправить комментарий