Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Помогите вывести многоуровневое меню правильно

01.09.2011, 12:06
Roman
Infoservis

Зарегистрирован:
2006-06-01
Сообщений: 31

Здравствуйте,

Есть раздел 0 уровня "Услуги" (id 84) в нем подразделы до 3х уровней вложенности Т.е.

Услуги
Категория1
Услуга11
ПодУслуга11
ПодУслуга12
Услуга12
ПодУслуга21
ПодУслуга22
Категория2
Услуга21
Услуга22
Категория3
Услуга31
Услуга32

Ссылками являются разделы Услуга и ПодУслуга

Пишу в макете дизайна

".s_browse_sub(84,$browse_sub[0])."

в шаблонах навигации:

$browse_sub[2]['prefix'] = "<ul><font size=-1>";
$browse_sub[2]['suffix'] = "</font></ul>";
$browse_sub[2]['active'] = "<li><b><a href=%URL>%NAME</a></b>";
$browse_sub[2]['active_link'] = "<li><b><a href=%URL>%NAME</a></b>";
$browse_sub[2]['unactive'] = "<li><b><a href=%URL>%NAME</a></b>";
$browse_sub[2][divider] = "";

$browse_sub[1]['prefix'] = "<ul>";
$browse_sub[1]['suffix'] = "</ul>";
$browse_sub[1]['active'] = "<li><b><a href=%URL>%NAME</a></b>".s_browse_level(2,$browse_sub[2])."</li>";
$browse_sub[1]['unactive'] = "<li><a href=%URL>%NAME</a>".s_browse_level(2,$browse_sub[2])."</li>";
$browse_sub[1][divider] = "";

$browse_sub[0]['prefix'] = "\";global \$browse_sub;\$result.=\"<ul>";
$browse_sub[0]['suffix'] = "</ul>";
$browse_sub[0]['active'] = "<li><b>%NAME</b>\".s_browse_sub(\$data[\$i][Subdivision_ID],\$browse_sub[1]).\"</li>";
$browse_sub[0]['unactive'] = "<li><b>%NAME</b>\".s_browse_sub(\$data[\$i][Subdivision_ID],\$browse_sub[1]).\"</li>";
$browse_sub[0][divider] = "";

Но выводит на главной только дерево до 2го уровня
т.е. ссылок на "ПодУслуги" нет.
И при заходе по ссылке в разделы "Услуги" где есть ПодУслуги выводит дублирование в каждом пункте выбранного Раздела и его подразделов 3го уровня.

Подскажите плиз как правильно написать вывод меню.
Чтобы и все уровни вложенности выводились и чтобы дублирования небыло при заходе внутрь.

спасибо.
01.09.2011, 12:17
Roman
Infoservis

Зарегистрирован:
2006-06-01
Сообщений: 31

Если шаблон 2го уровня переписать так

$browse_sub[1]['prefix'] = "<ul>";
$browse_sub[1]['suffix'] = "</ul>";
$browse_sub[1]['active'] = "<li><b><a href=%URL>%NAME</a></b>\".s_browse_sub(\$data[\$i][Subdivision_ID],\$browse_sub[2]).\"</li>";
$browse_sub[1]['unactive'] = "<li><a href=%URL>%NAME</a>\".s_browse_sub(\$data[\$i][Subdivision_ID],\$browse_sub[2]).\"</li>";
$browse_sub[1][divider] = "";

То проблема дубляжа проходит, но 3й уровень вложенности все равно не выводит.
Что можно сделать ?, не хочется выводить каждую Категорию отдельным вызовом.
01.09.2011, 12:24
Pix Play
Pix Play

Зарегистрирован:
2011-04-11
Сообщений: 70

замените первую строчку для второго уровня:

Код:
$browse_sub[1]['prefix'] = "\";global \$browse_sub;\$result.=\"<ul>";


laboratory of ideas
01.09.2011, 12:37
Roman
Infoservis

Зарегистрирован:
2006-06-01
Сообщений: 31

О, ну конечно, спасибо, разблокировали мозг :-)
06.10.2011, 14:11
Sergey

Зарегистрирован:
2011-10-03
Сообщений: 13

пытаюсь сделать по аналогии
Код:

$browse_sub[2]['prefix'] = "<ul class='submenu'>";
$browse_sub[2]['suffix'] = "</ul>";
$browse_sub[2]['active'] = "<li class=\\\"active\\\"><b><a href=%URL>%NAME</a></b></li>";
$browse_sub[2]['unactive'] = "<li><a href=%URL>%NAME</a></li>";
$browse_sub[2][divider] = "";

$browse_sub[1]['prefix'] = "\";global \$browse_sub;\$result.=\"<ul class='submenu'>";
$browse_sub[1]['suffix'] = "</ul>";
$browse_sub[1]['active'] = "<li class=\\\"active\\\"><b><a href=%URL>%NAME</a></b>".dev_browse_level(2,$browse_sub[2])."</li>";
$browse_sub[1]['unactive'] = "<li><a href=%URL>%NAME</a>".dev_browse_level(2,$browse_sub[2])."</li>";
$browse_sub[1][divider] = "";

$browse_sub[0]['prefix'] = "\";global \$browse_sub;\$result.=\"<ul>";
$browse_sub[0][suffix] = "</ul>";
$browse_sub[0][unactive] = "<li><a href='%URL'>%NAME</a>\".dev_browse_sub(\$data[\$i][Subdivision_ID],\$browse_sub[1]).\"</li>";
$browse_sub[0][active] =
$browse_sub[0][active_link] = "<li class=\\\"active\\\"><a class='active' href='%URL'>%NAME</a>\".dev_browse_sub(\$data[\$i][Subdivision_ID],\$browse_sub[1]).\"</li>";
$browse_sub[0][divider] = "";

выводит всё норм. но нужно чтобы подразделы появлялись если выбрать родительский раздел. как можно сделать?
10.12.2011, 21:49
Yulia

Зарегистрирован:
2011-12-10
Сообщений: 4

А у меня вообще даже на стандартном примере не выводится меню. Происходит непонятно что.

Вот структура:
О компании
-- История
-- Миссия
Обратная связь
-- Контакты
-- Задать вопрос
-- Как проехать

Вот описание переменных:
$browse_sec[prefix] = "<div class='otleft'>";
$browse_sec[suffix] = "<br></div>";
$browse_sec[active] = "<a href='%URL'>%NAME</a><br>";
$browse_sec[active_link] = "<a href='%URL'>%NAME</a><br>";
$browse_sec[unactive] = "<a href='%URL'>%NAME</a><br>";
$browse_sec[divider] = "";

$browse_main[prefix] = "";
$browse_main[suffix] = "";
$browse_main[active] = "<span class='menu_toggle'>%NAME</span>".s_browse_sub($data[$i][Subdivision_ID],$GLOBALS[browse_sec])."";
$browse_main[active_link] = "<span class='menu_toggle'>%NAME</span>".s_browse_sub($data[$i][Subdivision_ID],$GLOBALS[browse_sec])."";
$browse_main[unactive] = "<span class='menu_toggle'>%NAME</span>".s_browse_sub($data[$i][Subdivision_ID],$GLOBALS[browse_sec])."";
$browse_main[divider] = "";


вот вывод в шаблоне
".s_browse_level(0,$browse_main)."


Результат :
О компании
-- О компании
-- Обратная связь
Обратная связь
-- О компании
-- Обратная связь

Т.е. тут даже третьего пункта нет. Я не пойму почему так происходит

Если делаю так:
".s_browse_level(0,$browse_sub[0])."
".($current_catalogue['Title_Sub_ID']==$sub ? ($template_settings['left_menu_sub'] ? s_browse_sub($template_settings['left_menu_sub'],$browse_sub[1]) : '') : s_browse_level(1, $browse_sub[1]) )."

То пункты выводит те, что нужно, то все второго уровня только после того как выводятся все первого уровня.

Подскажите, пожалуйста, где почитать или что я не так делаю.
10.12.2011, 23:44
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Код:
$browse_main[active] = "<span class='menu_toggle'>%NAME</span>\".s_browse_sub(\$data[\$i][Subdivision_ID],\$GLOBALS[browse_sec]).\"";
$browse_main[active_link] = "<span class='menu_toggle'>%NAME</span>\".s_browse_sub(\$data[\$i][Subdivision_ID],\$GLOBALS[browse_sec]).\"";
$browse_main[unactive] = "<span class='menu_toggle'>%NAME</span>\".s_browse_sub(\$data[\$i][Subdivision_ID],\$GLOBALS[browse_sec]).\"";


Temet nosce...
11.12.2011, 00:53
Yulia

Зарегистрирован:
2011-12-10
Сообщений: 4

Спасибо, все прекрасно сработало
До сих пор не пойму почему пример из документации не работает? Дело в глобальной переменной? или еще в чем-то?
198 196 2011-12-11 00:53:26 11534
Описание проекта