Magento - 从主页中删除活动状态

时间:2009-12-28 20:07:57

标签: php magento

我在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

2 个答案:

答案 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”类,以便上述代码可以使用。