Чистый PHP или CSS — в древовидном меню отображаются только активные узлыPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Чистый PHP или CSS — в древовидном меню отображаются только активные узлы

Сообщение Anonymous »

Я построил древовидное меню на PHP, используя рекурсивную функцию, которая работает нормально.
Моя структура меню примерно такая:
Root

----Categ1

-------Categ11

---------Categ111

---------Катег112

-------Катег12

---------Катег121

---------Катег122

----Катег2

----Катег3

----Categ4
Я использую начальную загрузку.
Мне нужно показать только активные узлы и дочерние элементы верхнего уровня. Для моего примера мне нужно, чтобы меню открывалось следующим образом (я нажал на категорию 112 и подкатегории категории 12 были скрыты):

Root

----Categ1

-------Categ11

---------Categ111

---------Categ112

-------Categ12

----Categ2

----Categ3

----Categ4
Функция PHP, которая генерирует мое дерево меню:
/** show all subcategs of the selected category
* @param $iCategIDSelected
* @param null $arrCategs
* @param bool $bIsOnTheLeaf
* @return string
*/
static function getHTMLCategsForMenuBySelected($iCategIDSelected, $arrCategs=null, $arrAllParents=null){

$bIsVisible = false;
if($arrCategs == null){
$oController = new ShopcategoriesController();
$arrCategs = $oController->getShopCategories(0);
}

//find if we make the current node visible or not
//if the current node id is on the parent's of the selected node then make it visible
//take all nodes starting with root until the selected node
if($arrAllParents==null){
$arrAllParents = ShopcategoriesController::getParentsBySelectedCategID($iCategIDSelected,$arrCategs);
}

$sHTML = '
  • ';

    foreach($arrCategs as $oneCateg){
    //find if is active or not
    $bActiveClass = '';
    if(in_array($oneCateg['id'],$arrAllParents)){$bActiveClass = 'active';}

    $sHTML .= '
  • ';
    $sHTML .= 'Categ1


    Categ11

    Categ111
  • Categ112
[*]Categ12


[*]
Categ2 Categ3
Categ4




Подробнее здесь: https://stackoverflow.com/questions/325 ... tive-nodes
Ответить

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

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»