2013-03-31 3 views
7

Come posso ottenere uno specifico livello di categoria da Magento, l'impostazione della categoria ora è simile a questa.Ottieni un livello di categoria specifico

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

Quando si chiama $ category-> getName(); Mi piacerebbe solo mostrare il nome del marchio, è possibile?

risposta

8

È possibile ottenere il livello di categoria da $category = Mage::getModel('catalog/category')->load($categories[1]))->getLevel() e quindi verificare con il livello di categoria del nome del marchio, se la corrispondenza e il nome visualizzato.

ad es. supponiamo livello di categoria di marca è la risposta 3

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

c'è un modo per farlo con filtro attributo? Ho cercato di ottenere solo il livello 3 con -> addAttributeToFilter ('level', 3). ma visualizza 2 + 3, invece di 3. 3. – aahhaa

5

di ANKIT è buona, ma potrebbe essere migliorata in realtà di query-ing i livelli specifici invece di caricare l'intera collezione e facendo un condizionale. Prendiamo ad esempio se si desidera ottenere tutte le categorie in un livello specifico:

<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

Mi piace il tuo modo migliore, ma come fai a mostrare il livello 3? Sto usando -> addAttributeToFilter ('level', 3) ma visualizza 2 + 3, invece di solo 3 – aahhaa

+0

forse un po 'tardi ... ma, credo che l'eq nella riga sia qualificato per uguali. es. -> addAttributeToFilter ('level', array ('eq' => 2)) –