Joomla: получить активный пункт меню - PullRequest
0 голосов
/ 19 ноября 2011

Я пытаюсь реализовать пользовательское меню в моем шаблоне Joomla. Я добавил эту строку в нужной позиции в моем index.php

<?php include(dirname(__FILE__).DS.'/navi.php'); ?>

navi.php выглядит так

<?php
defined( '_JEXEC' ) or die( 'Restricted access');

$db = &JFactory::getDBO();

$query = "SELECT * FROM jos_menu WHERE menutype='mainmenu' AND published='1' AND sublevel='0' AND access='0' ORDER BY ordering ASC;";
$db->setQuery($query);
$navi = $db->loadAssocList();

$menu   = &JSite::getMenu();
$active = $menu->getActive();

foreach ($navi as $item) {
    if ($item['id'] == $active->id) {
        $open = ' class="open"';
    } else {
        $open = '';
    }
    echo '<li'.$open.'><a href="'.$item['link'].'">'.$item['name'].'</a></li>';
}

?>

Проблема в том, что переменная $active содержит данные только тогда, когда открыта первая страница. Что не так с этим кодом?

Спасибо!

1 Ответ

0 голосов
/ 19 ноября 2011

Нашли ошибку: вам нужен другой метод для определения URL пункта меню:

$url = JRoute::_($item['link'].'&Itemid='.$item['id']);
echo '<li'.$open.'><a href="'.$url.'">'.$item['name'].'</a></li>';

Спасибо!

...