Magento - Ana Sayfasından Aktif Devlet Çıkarma

2 Cevap php

Ben Magento mağaza benim menü öğeleri görüntüler top.phtml bu kodu var:

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

Ben başka bir sayfa görüntüler altındaki ekstra bir li var. Ben sorun ben 'Satış Item' sayfasını tıklayın oluşur: kendi link aktif olur ama çok ana sayfa bağlantısını yapar. Nasıl aktif görünmesini ana sayfa linki önleyebilir?

I’ve added a screenshot to show the problem: Screenshot

2 Cevap

Ev ve Satış Öğeleri hatları hem kodu aracılığıyla, mevcut kategorisi tanımlı değil aktif bir kategori bağlantısını çıkış vardır if(!Mage::registry('current_category')). Bunun yerine kategoriyi kontrol, akım kontrolörü / kontrol hareketi.

İşte (denetleyici / eylem almak için) URL fonksiyonların bir listesi:

http://docs.magentocommerce.com/Mage%5FCore/Mage%5FCore%5FModel%5FUrl.html

Böyle kod çalışması gerekir. Bu catalogsale kurulum bağlıdır özel bir kontrolör veya eylem için tanımlayıcı olup olmadığına bağlıdır:

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

Ben bazı javascript kullanarak bu sabitleme sona erdi. Ben yeni sayfaya bu ekledi:

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

Yeni menü öğesi çalışmak için yukarıdaki kodu için 'newmenu' bir sınıf olması gerekir.