2009-12-28 4 views
0

J'ai ce code dans top.phtml qui affiche mes éléments de menu dans mon magasin Magento:Magento - Suppression d'État actif De Page d'accueil

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

J'ai un li supplémentaire en bas qui affiche une autre page. Le problème que j'ai se produit lorsque je clique sur la page "Article de vente": son lien devient actif, tout comme le lien de la page d'accueil. Comment puis-je empêcher l'affichage du lien de la page d'accueil?

J'ai ajouté une capture d'écran pour montrer le problème: Screenshot

Répondre

2

Les lignes pour la maison et les objets de vente sont à la fois émettre un lien de catégorie active lorsque la catégorie actuelle n'est pas défini, via le code if(!Mage::registry('current_category')). Au lieu de vérifier la catégorie, vérifiez le contrôleur/l'action en cours.

Voici une liste des fonctions d'URL (pour obtenir le contrôleur/action):

http://docs.magentocommerce.com/Mage_Core/Mage_Core_Model_Url.html

code comme cela devrait fonctionner. Cela dépend si oui ou non catalogsale est l'identifiant d'un contrôleur personnalisé ou une action, qui dépend de votre configuration:

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

J'ai essayé les deux mais cela n'a pas fonctionné. – a1anm

0

J'ai fini par fixer cela en utilisant javascript. J'ajouté à la nouvelle page:

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

Le nouvel élément de menu doit avoir une classe de « NewMenu » pour le code ci-dessus pour travailler.

Questions connexes