"Умная" навигация с помощью PHP

Dimitry-1983

Новичок
"Умная" навигация с помощью PHP

Прошу подсказать принципиально, как мне построить навигацию на сайте.

Принципиальных вопроса три:

1. Чтобы на каждой странице данного раздела были ссылки на вложенные разделы (уровня 3-4 должно быть);

2. Чтобы была вспомагательная навигация
(/Domain /Products /Catalogue e.t.c.);

3. Чтобы ссылки легко изменялись во всём документе и была возможность их "дизайна" (последовательности);

Вопрос я решался с помощью БД путём составления таблиц со ссылками и операторов if и switch в PHP.
 

kvf77

Red Devil
Dimitry-1983

скачай, установи и запусти пример - увидишь все, о чем мечтал :)
http://php.russofile.ru/ru/authors/sql/nestedsets01/
 

Dimitry-1983

Новичок
Спасибо, конечно, но меня инетересует, как это можно сделать самому. С чего начать и на что обратить особое внимание.
 

kvf77

Red Devil
Dimitry-1983
вот эта бибилиотека даст тебе интерфейс - а все остальное будешь делать сам :)
 

_CMD_

Новичок
Идея которая сразу приходит в голову:
Создаешь Табличку в БД скажем назовем ее menu
структура у нее будет слудующая
id_menu int unsigned auto_increment primary key
up_id int unsigned not null default 0-- ссылка на ID вехнего узла
down bool not null default false -- есть ли дочерние разделы
menu_title char(50)

можно еще ввести уровень вложенности


вот а теперь пишем пишем неболшой скриптик, который выдерает нам меню и рисует его. Делаешь 2 функции одна для обычного меню, вторая для информации куда попал(второе у тебя)

Далее при отрисовке первого меню ссылку генерируешь с параметром (назовеме его id_menu), который будет указывать в каком узле меню мы находимся.
Далее при отрисовке меню ты смотришь на этот параметр и если он стоит и у данного узла есть дочерние отображаешь их через рекурсивную функцию если надо отобразить всю вложенность или обычной чтобы оторозить только 1 уровень дочерних элементов....

Как рисовать горизонтальное меню:
Берем тот же самый параметр (id_menu) и фенкцией вычисляем всех его родителей до уровня у которго up_id=0
зпоминаем их всех вот и все.....

А что казаеться изменени дизайна советую исвользавать XSL+XML и проблем не будет
--------

А так вообще можно очень многими способами решить данну проблему
 

kvf77

Red Devil
Dimitry-1983

че страшного - я ее описал по самое нехочу на русском - помоему ничего в ней страшного нету. и примеров создал к ней много и понятных

впрочем, тебе уже тут насоветовали - пробуй :)

а заодно конечно тут XML и XSL просто необходимы - ну как воздух прямо :)
 

Groove

Новичок
_CMD_
не стоит придумавать то, что уже отлажено, етм более криво
а вот стоит посмотреть ссылку, что дал господин kvf77и тогда ты поймешь, что много за тебя уже сделано (причем без неуместной рекурсии в данном случае, одним запросом)

про проблемы с дизайном: для легкости изменения дизайна в принципе не важен инструмент, важна идея будет это то, о чем ты сказал или что то другое

Dimitry-1983
чтобы начать делать что то свое необходимо просмотреть хотя бы поверхностно то, что уже сделано на эту тему до тебя.
так сказать провести исследование. в одном ты абсолютно прав - конечно же не стоит ТУПО КОПИРОВАТЬ КОД, который тебе дал kvf77, надо будет с ним разобраться, хотя в той статье расписано так, что можно этот инструмент рассматривать как черный ящик, который работает сам по себе и тебе не надо даже знать как.

Удачи!
 

Dimitry-1983

Новичок
Большое спасибо. Буду пробовать. Деваться некуда. А со вложенными табличками я уже намучался. Доходило до 10 параметров (уровень, вложенность, показывать или нет и т.д.)
 

_CMD_

Новичок
Groove
Ну парень просил чтоб ему рассказали как я рассказал, я не против библиотеке на которую кинули ссылку...

--------

Что за вложенные таблички ?)))
 

Ixtraz

Новичок
Не знаю... писал сам... потом рекурсивно выводил... получалась неограниченная вложенность элементов меню...:) главное в базе все верно сделать. делал примерно так:
tmenu
|-fk_id \\ ID номер меню
|-fk_parent \\ "родитель" (по умолчанию null. у верхушки как раз null)
|-fc_name \\ соответственно имя.
{дополнительно}
|-fc_syn \\ уникальный синоним. (для ЧПУ)
|-fc_header \\ заголовок статьи.
|-fc_content \\ содержание статьи.
 
Сверху