[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Древовидное меню
sartas
Меню многоуровневое и находится в двухмерном массиве. Нужно
раскрыть категории всех уровней до категорий с нужными id. Все родители/потомки известны.

Я знаю как вывести одну раскрытую ветвь меню, а как вывести несколько ветвей?



Спустя 3 часа, 11 минут, 49 секунд (9.12.2009 - 20:21) Kuliev написал(а):

<?php

$arr = array(
"Авто" => array (
"Lada",
"Mersedes",
"Reno"
),
"Мотоцикл" => array(
"Honda",
"Suzuki"
)
);


foreach ($arr as $key => $val)
{
echo "<ol>".$key;

foreach ($val as $v)
{
echo "<li>".$v;
}
echo "</ol>";
}




?>

Спустя 29 минут, 15 секунд (9.12.2009 - 20:50) sartas написал(а):
Возможно я не точно объяснил. Нужно не просто вывести это меню, а в зависимости от страницы открывать нужные категории, уровень вложенности категорий больше четырех.

Короче, меню как здесь - express-tour.ru

Спустя 49 минут, 18 секунд (9.12.2009 - 21:39) sartas написал(а):
С express-tour.ru поторопился, такое я могу сделать, а как сделать чтобы было открыто сразу несколько ветвей меню? Это реализовано в админке Frog CMS, сначала категории открываются на аяксе и их id сохраняются в куках, а после перезагрузки страницы выводится меню с уже открытыми категориями. Вот и встала проблема с генерацией такого меню.

Спустя 50 минут, 58 секунд (9.12.2009 - 22:30) Romms написал(а):
Так тебе нужно не PHP а JavaScript...
думаю как с куками работать в нете найдёшь...
Если я правильно понял то тебе поможет document.getElementById("elementID").style.display="none"; или "block" если хоч показать обьект
Задаешь стиль для подменю...

Спустя 35 минут, 47 секунд (9.12.2009 - 23:06) dr_Lev написал(а):
Как-то сталкивался с таким делом, помогла статья http://javascript.ru/ui/tree

Спустя 1 час, 8 минут, 3 секунды (10.12.2009 - 00:14) sergeiss написал(а):
Цитата (sartas @ 9.12.2009 - 22:39)
начала категории открываются на аяксе и их id сохраняются в куках, а после перезагрузки страницы выводится меню с уже открытыми категориями. Вот и встала проблема с генерацией такого меню.

То есть, проблема сводится к тому, чтобы после перезагрузки были открыты те же категории? Если "да", то это вообще не проблема.
А если "нет", то тогда почётче сформулируй.

Спустя 7 часов, 51 минута, 1 секунда (10.12.2009 - 08:05) sartas написал(а):
Да после перезагрузки должны быть открыты те же категории.
Сначала средствами php выводится меню первого уровня, потом юзер тыкает на картинку, для раскрытия категории и аяксом подгружается ее содержимое. В раскрытой категории есть другие категории, которые тоже можно раскрыть. Идентификаторы каждой открытой категории сохраняются в куках.

После перезагрузки нужно на php вывести меню с уже открытыми категориями.

Проблема только с генерацией самого меню.
//начало моего массива
$Items = array(
array(
'parent' => '',
'childs' => array(1,2,99),
'url' => 'url0',),
array(
'parent' => 0,
'childs' => array(3,55),
'url' => 'url1',),
array(
'parent' => 0,
'childs' => array(65,66,67),
'url' => 'url2',),
array(
'parent' => 1,
'childs' => array(4,37,22),
'url' => 'url3',),
array(
'parent' => 3,
'childs' => array(8,34,56),
'url' => 'url4',)
)

Вроде разобрался unsure.gif , просто не сообразил с какой стороны подойти к этому делу.
Из кук берем id последней категории из дерева открытых. Находим одномерный массив родителей до нужной категории.
$Opens = array(
array( 1,3,4,22 ),
array( 65,67 ),
...
)

В $rootItems категории первого уровня, для каждой проверяем открыты ли их дети, если да - строим ветку из открытых подкатегорий.
$rootItems = getChildsID(0);

foreach ( $rootItems as $Item ) {
foreach ( $Opens as $openID => $open ) {
$menu .= $Item['url'];
if ( $Item == $open[0] ) {
$menu .= getOpenMenu($Child,$openID);
}

}

}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.