Joomla 1.5 Добавление стиля для списка в mod_mainmenu

Тема в разделе "Навигационная структура сайта", создана пользователем mewtwo, 08.07.2010.

  1. mewtwo
    Offline

    mewtwo Недавно здесь

    Регистрация:
    07.07.2010
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    У каждого пункта меню есть свой псевдоним (alias). В файле helper.php я могу вывести его в качестве имени стиля для ссылок
    Код (PHP):
    1. switch ($tmp->browserNav)
    2.    {
    3.     default:
    4.     case 0:
    5.     // _top
    6.         $data = '<a class="'.$item->alias.'" href="'.$tmp->url.'">'.$image.$tmp->name.'</a>';
    7.         break;


    в html получается следующее:
    Код (html):
    1. <ul class="menu">
    2. <li><a class="menu1" href="index.php">Главная страница</a></li>
    3. <li><a class="menu2" href="#">Пункт 1</a>
    4.        <ul>
    5.     <li><a class="2010-07-04-18-12-52" href="#">П/пункт 1</a></li>
    6.     <li><a class="2010-07-04-18-12-53" href="#">П/пункт 2</a></li>
    7.         </ul>
    8. </li>
    9. <li><a class="menu3" href="#">Пункт 2</a>
    10.        <ul>
    11.     <li><a class="2010-07-04-18-12-54" href="#">П/пункт 1</a></li>
    12.     <li><a class="2010-07-04-18-12-55" href="#">П/пункт 2</a></li>
    13.         </ul>
    14. </li>
    15. </ul>


    как сделать так, чтобы выводился alias для тега <ul> подпункта меню и плюс буква (в моем случае я добавляю s), чтобы в css затем лучше распознать:
    Код (html):
    1. <ul class="menu">
    2. <li><a class="menu1" href="index.php">Главная страница</a></li>
    3. <li><a class="menu2" href="#">Пункт 1</a>
    4.        <ul class="smenu2">
    5.     <li><a class="2010-07-04-18-12-52" href="#">П/пункт 1</a></li>
    6.     <li><a class="2010-07-04-18-12-53" href="#">П/пункт 2</a></li>
    7.         </ul>
    8. <li><a class="menu3" href="#">Пункт 2</a>
    9.        <ul class="smenu3">
    10.     <li><a class="2010-07-04-18-12-54" href="#">П/пункт 1</a></li>
    11.     <li><a class="2010-07-04-18-12-55" href="#">П/пункт 2</a></li>
    12.         </ul>
    13. </li>
    14. </li>
    15. </ul>


    в самом коде пробовал по аналогии с функцией function _getItemData(&$params, $item) передавать параметр $item в функцию function _getLevelXML($depth), но в итоге в названии стиля выводился alias последнего пункта меню.
     
    Последнее редактирование: 09.07.2010
  2.  
  3. mewtwo
    Offline

    mewtwo Недавно здесь

    Регистрация:
    07.07.2010
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    В результате вышеперечисленных действий выводился в качестве стиля для <ul> псевдоним последнего пункта меню.
    Может кто подскажет регулярное выражение, чтобы достать из строки название стиля menu1
    Код (html):
    1. <a class="menu1" href="http://localhost/"><![CDATA[Главная страница]]></a>


    И тогда у меня получится, что я задумал.
     
  4. mewtwo
    Offline

    mewtwo Недавно здесь

    Регистрация:
    07.07.2010
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    Изучил регулярные выражения, оказалось все просто
    Код (PHP):
    1. function _getLevelXML($depth)
    2.     {
    3.         $depth++;
    4.         $link = $this->_current->link;
    5.         preg_match("/<a class\=\"(.*)\" href/i", $link, $matches);
    6.        
    7.         // Start the item
    8.         $rel = (!empty($this->_current->mid)) ? ' rel="'.$this->_current->mid.'"' : '';
    9.         $this->_buffer .= '<li access="'.$this->_current->access.'" level="'.$depth.'" id="'.$this->_current->id.'"'.$rel.'>';
    10.  
    11.         // Append item data
    12.         $this->_buffer .= $this->_current->link;
    13.  
    14.         // Recurse through item's children if they exist
    15.         while ($this->_current->hasChildren())
    16.         {
    17.             $this->_buffer .= '<ul class="s'.$matches[1].'">';
    18.             foreach ($this->_current->getChildren() as $child)
    19.             {
    20.                 $this->_current = & $child;
    21.                 $this->_getLevelXML($depth);
    22.             }
    23.             $this->_buffer .= '</ul>';
    24.         }
    25.  
    26.         // Finish the item
    27.         $this->_buffer .= '</li>';
    28.     }
     

Поделиться этой страницей

Загрузка...