2009-12-28 3 views
0

У меня есть этот код в top.phtml, который отображает мои пункты меню в моем магазине Magento: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

Линии для дома и продаж элементов являются выводя активную ссылку категории, если текущая категория не определена, с помощью кода 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 
+0

Я пробовал оба из них, но не работал. – a1anm

0

Я в конечном итоге исправить эту проблему с помощью некоторых JavaScript. Я добавил это к новой странице:

<script type="text/javascript"> 
Event.observe(window, 'load', function() { 
$$('li.active').invoke('removeClassName','active'); 
$$('li.newmenu').invoke('addClassName','active'); 
}); 
</script> 

Новый пункт меню должен иметь класс «newmenu» для приведенной выше коды для работы.

Смежные вопросы