| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Libraries > кто поможет разобраться с меню? смарти, туды |
| Автор: sinner85 22.5.2012, 17:26 |
| Сломал всю голову, но никак не могу найти решения. Хочется реализовать вертикальное меню, по типу такого - http://www.cssplay.co.uk/menus/dl-slide.html#url или такого - http://www.cssplay.co.uk/menus/cssplay-click-click-slide.html Исходные данные представлены одномерным массивом такой структуры: folder_id: 39945 folder_name: tree_id: 32807 _left: 1 _right: 142 _level: 0 items: 0 serialize: page_url: /link folder_id: 39946 folder_name: Title1 tree_id: 32807 _left: 2 _right: 33 _level: 1 items: 831 serialize: page_url: /link folder_id: 39965 folder_name: Title2 tree_id: 32807 _left: 3 _right: 4 _level: 2 items: 19 serialize: Array page_url: /link <...> Собсно, здесь только по одному полю можно судить - _level = [1|2]. Т.е. "корень" = 1, а его подкатегория = 2. пытался через foreach - не получается, через section - нельзя, только для числовых массивов.... Да, ещё не получается определить свою переменную, пишет, что "защищённый режим - все свободны" =( Кто подскажет в каком направлении "копать". Если получится пример привести - будет здорово. |
| Автор: skyboy 22.5.2012, 23:22 |
у тебя структура дерева хранится в форме http://en.wikipedia.org/wiki/Nested_set_model. удобно для вытягивания поддеревьев. но не очень — для вывода. для вывода вообще было бы классно написать плагин под смарти, который принимает дерево и путь к шаблону одного элемента. и рекурсивно его выводит. и для такой функции лучше все же перевести б дерево в http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ формат. а потом - свернуть в многомерный массив. который уже можно попробовать http://www.smarty.net/docs/en/language.function.call.tpl#id356352 по-русски, кста, это звучит как "вложенные множества" и "список смежности". но проще найти все ж на английском. Добавлено через 49 секунд если, конечно, версия СМАРТИ и конфиг позволят. если нет — придется колдовать на стороне PHP кода |
| Автор: sinner85 23.5.2012, 14:58 |
| skyboy, спасибо за совет - начал читать.. пока не совсем понятно. доступ есть только к шаблонам (*.tpl), но я так понимаю, ПХП вставки будут работать. версия Смарти - 2.0 |
| Автор: sinner85 29.5.2012, 02:57 |
| skyboy, огромное спасибо за подсказку. решить удалось, правда не так изящно, но всё-таки. вопрос закрыт. |