9

カテゴリ オブジェクトをインスタンス化してその名前を取得することはできましたが、このgetUrlメソッドを使用すると、カテゴリ リスト ページへの URL が返されません。

<?php
$children = Mage::getModel('catalog/category')->getCategories(3);
foreach ($children as $category):
            echo '<li><a href="' . $category->getUrl() . '">' . $category->getName() . '</a></li>';
        endforeach;
?> 

上記のコードは、次の HTML 出力になります。

<li><a href="">name of sub-cat</a></li>`

catalog/categoryオブジェクトからカテゴリ ページの URL を取得する方法を知っている人はい ますか?

4

3 に答える 3

16

交換

$children = Mage::getModel('catalog/category')->getCategories(3);

$children = Mage::getModel('catalog/category')->load(3)->getChildrenCategories();
于 2011-05-05T12:33:53.273 に答える
6

問題は通常、カテゴリのコレクションではなく をgetCategories()返すことです。Varien_Data_Tree_Node_Collection代わりに、これを行うことができます:

$children = Mage::getModel('catalog/category')->getCategories(3, 0, false, true);

4 番目のパラメーターは$asCollectionであり、これを渡すと、おそらく期待していたtrueが返されることを意味します。Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection残りは今すぐ動作するはずです。

于 2011-05-05T12:00:17.763 に答える
3

foreachループ内のすべてのカテゴリをロードしてから、カテゴリURLを取得できます。

<?php
$children = Mage::getModel('catalog/category')->getCategories(3);
foreach ($children as $category): 
        $categoryUrl = Mage::getModel('catalog/category')->load($category->getEntityId())->getUrl();
        echo '<li><a href="' . $categoryUrl . '">' . $category->getName() . '</a></li>';
endforeach;
?>

これは、カテゴリの数が少ない場合は問題なく機能する可能性があります。ただし、カテゴリの数が多い場合は、さらに時間がかかることがあります。

于 2011-05-05T11:05:48.293 に答える