我在top.phtml中有这个代码,它在我的Magento商店中显示我的菜单项:
<div class="header-nav-container">
<div class="header-nav">
<h4 class="no-display"><?php echo $this->__('Category Navigation:') ?></h4>
<ul id="nav">
<li <?php if(!Mage::registry('current_category')) { echo 'class="level0 active"'; } else { echo 'class="level0"'; } ?>><a href="<?php echo $this->getUrl('') ?>"><span><?php echo $this->__('Home') ?></span></a></li>
<?php foreach ($this->getStoreCategories() as $_category): ?>
<?php echo $this->drawItem($_category) ?>
<?php endforeach ?>
<li <?php if(!Mage::registry('current_category')) { echo 'class="level0 active"'; } else { echo 'class="level0"'; } ?>><a href="<?php echo $this->getUrl('catalogsale')?>"><span><?php echo $this->__('Sale Items') ?></span></a></li>
</ul>
</div>
我底部有一个额外的li
,显示另一页。单击“销售项目”页面时出现问题:其链接变为活动状态,但主页链接也是如此。如何防止主页链接显示为活动状态?
我添加了一个屏幕截图来显示问题: Screenshot
答案 0 :(得分:2)
Home和Sale Items的行在未定义当前类别时通过代码if(!Mage::registry('current_category'))
输出活动类别链接。检查当前控制器/操作,而不是检查类别。
这是一个URL函数列表(用于获取控制器/操作):
http://docs.magentocommerce.com/Mage_Core/Mage_Core_Model_Url.html
这样的代码应该有效。这取决于catalogsale是否是自定义控制器或操作的标识符,具体取决于您的设置:
if ($this->getRequest()->getControllerName() == 'catalogsale')
// Output active class declaration
/* Otherwise, try looking at the action name. */
if ($this->getRequest()->getActionName() == 'catalogsale')
// Output active class declaration
答案 1 :(得分:0)
我最终使用一些javascript修复此问题。我将其添加到新页面:
<script type="text/javascript">
Event.observe(window, 'load', function() {
$$('li.active').invoke('removeClassName','active');
$$('li.newmenu').invoke('addClassName','active');
});
</script>
新菜单项应该有一个“newmenu”类,以便上述代码可以使用。