カテゴリがアクティブで、[ナビゲーションメニューに含める]が[いいえ]に設定されている場合、すべてのカテゴリとサブカテゴリを取得するにはどうすればよいですか?
私はこれを使用しようとします:
<?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
}
?>
ただし、カテゴリの「ナビゲーションメニューに含める」が「いいえ」の場合、フロントページには表示されません。
変更する必要があるのは1つだけです。 $_categories = Mage::getBlockSingleton('catalog/navigation')
を呼び出すと、実際には具体的に_catalog/navigation
_モデルからカテゴリを取得しています。「非ナビゲーション」カテゴリのフィルタリングはすでに完了しています。代わりに、_catalog/category
_モデルからコレクションを取得して、サイトですべてのカテゴリを利用できるようにします。
_$categories = Mage::getModel('catalog/category')
->getCollection()
->addAttributeToSelect('*')
->addIsActiveFilter();
_
addIsActiveFilter()
を使用して、現在アクティブ/有効になっているカテゴリのみを取得していることに注意してください。
カタログ/カテゴリヘルパーを使用したい
$helper = Mage::helper('catalog/category');
$categories = $helper->getStoreCategories();