раскрыть категории всех уровней до категорий с нужными 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
Короче, меню как здесь - 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" если хоч показать обьект
Задаешь стиль для подменю...
думаю как с куками работать в нете найдёшь...
Если я правильно понял то тебе поможет 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 вывести меню с уже открытыми категориями.
Проблема только с генерацией самого меню.
Вроде разобрался
, просто не сообразил с какой стороны подойти к этому делу.
Из кук берем id последней категории из дерева открытых. Находим одномерный массив родителей до нужной категории.
В $rootItems категории первого уровня, для каждой проверяем открыты ли их дети, если да - строим ветку из открытых подкатегорий.
Сначала средствами 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](http://phpforum.ru/html/emoticons/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);
}
}
}