【发布时间】:2012-01-01 23:25:56
【问题描述】:
我正在尝试在我的 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 - 包含不是函数 - 它不需要括号。 2 - 您已经在 sql 中硬编码了 'jos_' 表前缀。我意识到这可能完全是供您自己使用的,但最好至少意识到这个问题。使用 #__(哈希和两个下划线)代替 jos_ 并让 Joomla 为您进行替换。