Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Цитата(sinner85 @  22.5.2012,  16:26 Найти цитируемый пост)
Кто подскажет в каком направлении "копать"

у тебя структура дерева хранится в форме 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, огромное спасибо за подсказку.
 решить удалось, правда не так изящно, но всё-таки.

 вопрос закрыт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)