2013-03-31 18 views
7

Jak uzyskać konkretny poziom kategorii z Magento, moja konfiguracja kategorii wygląda teraz tak.Uzyskanie określonego poziomu kategorii

root_catalog 
    |-Shop 
     |-Shoes 
     |-T-shirts 
    |-Brands 
     |-Nike 
      |-Womens 
      |-Mens 
     |-Adidas 
     |-Asics 

<?php if($category = Mage::getModel('catalog/category')->load($categories[1])): ?> 
    <?php echo $category->getName(); ?> 
<?php endif ?> 

Podczas wywoływania $ category-> getName(); Chciałbym wyświetlić tylko nazwę marki, czy to możliwe?

Odpowiedz

8

Możesz uzyskać poziom kategorii od $category = Mage::getModel('catalog/category')->load($categories[1]))->getLevel() , a następnie sprawdzić na poziomie kategorii marki, jeśli pasuje do nazwy wyświetlanej.

np. Poziom Marka Załóżmy jest odpowiedź 3

<?php if($category = Mage::getModel('catalog/category')->load($categories[1])): ?> 
    <?php if($category->getLevel() == 3) 
     echo $category->getName(); ?> 
    <?php endif ?> 
<?php endif ?> 
+0

jest sposób, aby zrobić to z filtrem atrybutów? Próbuję uzyskać tylko poziom 3 z -> addAttributeToFilter ("poziom", 3). ale wyświetlają 2 + 3, zamiast tylko 3. – aahhaa

5

ankit jest dobra, ale może być poprawiona przez faktycznie query-ing konkretne poziomy zamiast ładowania całą kolekcję i robi warunkowego. Weźmy na przykład, jeśli chcesz, aby wszystkie kategorie w określonym poziomie:

<ul> 
<?php $categories = Mage::getModel('catalog/category') 
         ->getCollection() 
         // magic is prepared here.. 
         ->addAttributeToSelect('*') 
         // then the magic happens here: 
         ->addAttributeToFilter('level', array('eq'=>2)) 
         ->load(); 

     foreach($categories as $category): 
?> 
<li>$category->getName()</li> 
<?php endforeach; ?> 
</ul> 
+0

Podoba mi się lepiej, ale jak wyświetlić poziom 3? Używam -> addAttributeToFilter ("poziom", 3), ale wyświetlają 2 + 3, zamiast tylko 3 – aahhaa

+0

może trochę późno ... ale wierzę, że "eq" w linii kwalifikuje się do równych. eg -> addAttributeToFilter ('level', array ('eq' => 2)) –

Powiązane problemy