Двухуровневое меню. Как сделать

12
D
На сайте с 13.01.2006
Offline
114
1990

Сразу прошу извинить, что объясняю не на словах, а на примере...

Итак, берем: http://www.sts-dveri.ru/ (извинясь перед владельцем, просто взял первый попавшийся из конкурентов :) )

Слева меню...

Нажимаем, например, на "Перечень услуг и виды работ"

Страница перегружается перед нами открывается новая страница "Перечень услуг и виды работ"

Но при этом, появилась два пункта подменю...

Вот надо бы такой скриптик.

Конечно, можно взять и JAVA, где все намного проще, но JAVA не подходит по некоторым причинам.

Ayavryk
На сайте с 11.10.2003
Offline
209
#1
dirol:
Вот надо бы такой скриптик.

Там все генерируется на сервере без JS. Отображение сделано черз CSS

Примеры HTML кода можно посмотреть здесь: http://cssplay.co.uk/menus/index.html

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
D
На сайте с 13.01.2006
Offline
114
#2

был я уже там, то чего мне нужно так и не нашел

Может искал плохо, сейчас еще попробую

SZ
На сайте с 17.08.2005
Offline
63
#3

А вы, извините меня, знаете что такое php?

D
На сайте с 13.01.2006
Offline
114
#4

SergoZD, еще знаю, что такое технология производства газонаполненного закрытоячеестого формового и неформового материала на основе термопласта и каучука, но и в том и другом, кроме echo "******"; и температурных условий ничего не знаю

UB
На сайте с 13.04.2006
Offline
44
#5
dirol:
SergoZD, еще знаю, что такое технология производства газонаполненного закрытоячеестого формового и неформового материала на основе термопласта и каучука, но и в том и другом, кроме echo "******"; и температурных условий ничего не знаю

😂 😆 жжете

Ярик
На сайте с 26.10.2003
Offline
121
#6

Может тут чего хорошего удастся найти.

не посылай, да и не послан будешь...
D
На сайте с 13.01.2006
Offline
114
#7

Ярик, мне кажется, что все же нужно использовать именно php, на cssplay подобного не нашел

SZ
На сайте с 17.08.2005
Offline
63
#8

Для примера мой галимейший до безобразия код, аднако вроде как работает =) Если у гуру php вдруг появятся критические замечания или предложения по оптимизации - с удольствием выслушаю, ибо как-то самому все не добраться до плотного изучения вопроса. В качестве примерного исходника для направления своих мыслей начинающим может быть и послужит. Сам недели две думал, как бы это реализовать, когда начинал скриптить более менее.

Таблица main_menu вида id, ord, name, target, parent. Где parent - id элемента меню в этой же таблице, которое является вышестоящим для текущего. parent у элементов первого уровня = 0. $i - это уровень текущего элемента, в зависимости от него и рисуется нужный шаблон (например необходимое количество отступов от края =) ) для этого элемента


function create_main_menu($id)
{
global $idpath, $textmenu, $page, $url, $i;
$i++;
$result=query("SELECT id, name, target FROM main_menu WHERE parent=".$id." ORDER BY ord ASC;");
$size=sizeof($result);
if ($size!=0)
{
foreach ($result as $menu)
{
if ($menu[id]==$page[id])
{
$textmenu.=$i." - уровень: <a href=".$url."/".$menu[target]."><b>".$menu[name]."</b></a><br>";
}
else
{
$textmenu.=$i." - уровень: <a href=".$url."/".$menu[target].">".$menu[name]."</a><br>";
}
foreach ($idpath as $idpatht)
{
if ($idpatht==$menu[id])
{
create_main_menu($menu[id]);
}
}
}
}
$i--;
}
//======================================================================Главное меню
function main_menu()
{
global $config, $page, $idpath, $textmenu;
$id=$page[id];
while (isset($id))
{
$idpath[]=$id;
$id=query("SELECT parent FROM main_menu WHERE id=".$id);
$id=$id[0][parent];
}
$textmenu="<!--Начало меню-->";
$textmenu.=create_main_menu(0);
$textmenu.="<!--Конец меню-->";
return $textmenu;
}
го
alexspb
На сайте с 14.11.2005
Offline
187
#9

SergoZD, как он может работать, если переменные потеряны i++; result=

Знак $ отсутствует ))) + функция query откуда?

Новички только запутаются ))

И вывод - это одно, а вот корректный ввод, возможность перемещения - тут уже админка нужна

alexspb
На сайте с 14.11.2005
Offline
187
#10

dirol, любой скриптик надо прикручивать (имена полей базы, вывод и т.п.). Либо брать цмс-ку с готовым решением.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий