2013-01-11 10 views
11

カテゴリがアクティブで、「ナビゲーションメニューに含める」が「いいえ」に設定されている場合、どのようにカテゴリとサブカテゴリを取得できますか?どのようにすべてのカテゴリとサブカテゴリを取得できますか?

<?php 
$_categories = Mage::getBlockSingleton('catalog/navigation'); 
foreach ($_categories->getStoreCategories() as $_category) { 
$category = Mage::getModel('catalog/category'); 
$category->load($_category->getId()); 
$subcategories = explode(',', $category->getChildren()); 
?> 
<dl> 
<dt><?php echo $this->htmlEscape($_category->getName()); ?></dt> 
<dd> 
<ol> 
<?php 
foreach ($subcategories as $subcategoryId) { 
$category->load($subcategoryId); 
echo '<li><a href="' . $category->getURL() . '">' . $category->getName() . '</a></li>'; 
} 
?> 
</ol> 
</dd> 
</dl> 
<?php 

} 
?> 

をしかし、カテゴリの「ナビゲーションメニューに含める 『』 NO」の場合には、それがフロントページに表示されませんです。

私はこれを使用してみてください!

答えて

29

あなたは1つのことを変更する必要があります! $_categories = Mage::getBlockSingleton('catalog/navigation')に電話すると、具体的にはcatalog/navigationモデルからカテゴリを取得しています。つまり、「非ナビゲーション」カテゴリからの除外は既に完了しています。代わりに、我々は、サイト上のすべてのカテゴリが利用でき得ることを確認するためにcatalog/categoryモデルからコレクションをつかむことができます。私たちは唯一の有効/現在アクティブなカテゴリを得ることを確認するためにaddIsActiveFilter()を使用しています

$categories = Mage::getModel('catalog/category') 
     ->getCollection() 
     ->addAttributeToSelect('*') 
     ->addIsActiveFilter(); 

注意を。

+1

おかげで、使用することを好みます!何が必要なのかを表示して、それを持っていく必要があります。 – Oleg

3

私はカタログ/カテゴリヘルパーあなたが本当に助け

$helper = Mage::helper('catalog/category'); 
$categories = $helper->getStoreCategories(); 
関連する問題