Как ограничить глубину дерева меню до 2-х уровней?

Главные вкладки

Аватар пользователя fit fit 25 сентября 2012 в 21:44

Столкнулся с тем, что нужно ограничить глубину меню до 2-х уровней.
Есть такое меню:

-кнопка 1
--субкнопка 1
--субкнопка 1
---субсубкнопка 1

Мне нужно что бы максимальная глубина была 2 уровня т.е.:

-кнопка 1
--субкнопка 1
--субкнопка 1

Вариант с JS или CSS костылями не годится, нужно что бы 3-го и последующих уровней не было в исходном html коде.
Буду рад подсказкам и помощи в поиске решения!

Есть такой модуль: http://drupal.org/project/menu_depth_limit но он для D7, а я на D6 работаю Sad

Комментарии

Аватар пользователя majstrak majstrak 26 сентября 2012 в 0:01

Попробуйте добавить в block.tpl.php своей темы такую штуку

<?php
    
if(($block->module=='menu')&&($block->delta=='menu-my')) 
    {
        
$document = new domDocument();
        
        
$document->loadHTML($block->content);

        

$document->preserveWhiteSpace false;

        

$ul $document->getElementsByTagName('ul');
        
        
$newMenu $document->createElement("ul");
        
$newMenu->setAttribute("class","menu");
        
        
        foreach(
$ul->item(0)->childNodes as $childNode)
        {
        
            if(
$childNode->nodeName=='li')
            {
            
                
$currentLi $childNode->cloneNode(true);
                
                if(
$currentLi->childNodes->length 1)
                {
                    
$childUl $currentLi->getElementsByTagName('ul')->item(0);
                    
                    foreach(
$childUl->childNodes as $childUlChildNode)
                    {
                        if(
$childUlChildNode->nodeName=='li')
                        {
                            if(
$childUlChildNode->childNodes->length 1)
                            {
                                
$childChildUl $childUlChildNode->getElementsByTagName('ul')->item(0);
                                
$childUlChildNode->removeChild($childChildUl);
                            }
                                
                        }
                        
                        
                    }
                    
                    
                }
                
                
$newMenu->appendChild($currentLi);    
            }
            
        }     
        
        
$block->content $newMenu->ownerDocument->saveXML($newMenu);

    }

?>
Аватар пользователя majstrak majstrak 26 сентября 2012 в 0:01

Попробуйте добавить в block.tpl.php своей темы такую штуку

<?php
    
if(($block->module=='menu')&&($block->delta=='menu-my')) 
    {
        
$document = new domDocument();
        
        
$document->loadHTML($block->content);

        

$document->preserveWhiteSpace false;

        

$ul $document->getElementsByTagName('ul');
        
        
$newMenu $document->createElement("ul");
        
$newMenu->setAttribute("class","menu");
        
        
        foreach(
$ul->item(0)->childNodes as $childNode)
        {
        
            if(
$childNode->nodeName=='li')
            {
            
                
$currentLi $childNode->cloneNode(true);
                
                if(
$currentLi->childNodes->length 1)
                {
                    
$childUl $currentLi->getElementsByTagName('ul')->item(0);
                    
                    foreach(
$childUl->childNodes as $childUlChildNode)
                    {
                        if(
$childUlChildNode->nodeName=='li')
                        {
                            if(
$childUlChildNode->childNodes->length 1)
                            {
                                
$childChildUl $childUlChildNode->getElementsByTagName('ul')->item(0);
                                
$childUlChildNode->removeChild($childChildUl);
                            }
                                
                        }
                        
                        
                    }
                    
                    
                }
                
                
$newMenu->appendChild($currentLi);    
            }
            
        }     
        
        
$block->content $newMenu->ownerDocument->saveXML($newMenu);

    }

?>