При разработке на Node.JS пользуюсь фреймворком Underscore.js, но к своему сожалению я обнаружил, что у него нет рекурсивного extend-а, который мне нужен как минимум при организации новых модулей, где есть файл конфигурации. Просто выпилить например из jQuery не получилось, поскольку там есть отсылки к другим методам из jQ. В итоге решил, что проще уже будет набросать новый велосипед.
И вот сделал себе плюшку в виде модуля, которая доступна всем на GitHub-е:
http://github.com/unclechu/node-deep-extend
UPD 11.04.2012: Теперь и в NPM: npm install deep-extend
пятница, 19 августа 2011 г.
четверг, 11 августа 2011 г.
1С-Битрикс: Иерархичное меню и result_modifier
Приветствую! Наверное уже есть множество способов решения данной задачи, но я решил сделать новый велосипед. Зачем? Не знаю. Захотел сделать простое и кроткое решение. Пожалуй не только мне досаждает то, что у Битрикса стандартный шаблон модуля меню почему-то выдаёт массив элементов одним уровнем и вложенность определяется только по ключу DEPTH_LEVEL. Приходится выкручиваться всякими финтами с подстановкой </li></ul> в начале новой итерации цикла, но это эстетически никак не доставляет, полагаю, что никому.
Я написал простой result_modifier.php, который подкладываю в директорию шаблона:
Вот код в файле: http://lotsmanov-va.narod.ru/files/bitrix_blog/menu_levels/result_modifier.txt
UPD 11.08.2011: Исправил имя ключа children на CHILDREN, совсем забыл про единство стиля.
Я написал простой 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, совсем забыл про единство стиля.
Подписаться на:
Сообщения (Atom)