2013-03-31 14 views
7

Magentoから特定のカテゴリレベルを取得するにはどうすればいいですか?特定のカテゴリを取得する

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

$ category-> getName();私はブランドネームだけを表示したいと思います、それは可能ですか?

答えて

8

カテゴリレベルを $category = Mage::getModel('catalog/category')->load($categories[1]))->getLevel() から取得し、ブランド名のカテゴリレベルに一致する場合は表示名を確認してください。

仮定するブランド部門のレベルは3

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

属性フィルタを使用する方法がありますか?私は - > addAttributeToFilter( 'レベル'、3)でレベル3のみを取得しようとしています。しかし、それは3だけでなく2 + 3を表示します。 – aahhaa

5

ANKITの答えは良いですが、それは実際には特定のレベルをクエリ-INGの代わりにコレクション全体をロードすると、条件をすることによって改善することができます。たとえば、特定のレベルですべてのカテゴリを取得する場合は、

<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

私はあなたのやり方が気に入っていますが、レベル3をどうやって表示するのですか?私はaddAttributeToFilter( 'level'、3)を使用していますが、3の代わりに2 + 3を表示します。 – aahhaa

+0

多分少し遅れています...しかし、私はラインの 'eq'がequalsを満たすと信じています。例えば、 - > addAttributeToFilter( 'level'、array( 'eq' => 2)) –

関連する問題