2013-03-31 7 views
7

Wie bekomme ich eine bestimmte Kategorie-Ebene von Magento, meine Kategorie-Setup sieht jetzt so aus.Spezifische Kategorie-Ebene

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

Beim Aufruf von $ category-> getName(); Ich möchte nur den Markennamen anzeigen, ist das möglich?

Antwort

8

Sie können Kategorienlevel von $category = Mage::getModel('catalog/category')->load($categories[1]))->getLevel() erhalten und dann mit Ihrer Markenkategorie-Ebene überprüfen, wenn Übereinstimmung dann Anzeigename.

z.B. suppose Marke Kategorieebene ist 3

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

gibt es eine Möglichkeit, es mit Attributfilter zu tun? Ich habe versucht, nur Level 3 mit -> addAttributeToFilter ('level', 3) zu bekommen. aber es zeigt 2 + 3 statt nur 3 an. – aahhaa

5

ANKIT Antwort ist gut, aber es könnte durch tatsächlich Abfrage-ing die spezifischen Werte statt Laden die ganze Kollektion und machen eine bedingte verbessert werden. Nehmen Sie zum Beispiel, wenn Sie alle Kategorien auf einer bestimmten Ebene erhalten möchten:

<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

Ich mag deinen Weg besser, aber wie zeigt man nur Level 3 an? Ich benutze -> addAttributeToFilter ('level', 3) aber es zeigt 2 + 3, anstatt nur 3 – aahhaa

+0

vielleicht ein bisschen spät ... aber ich glaube, das 'eq' in der Zeile qualifiziert sich für gleich. zB -> addAttributeToFilter ('level', Array ('eq' => 2)) –