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);

第四个参数是$asCollection,传递 atrue意味着您将返回Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection您可能期望的 a 。其余的现在应该可以工作了。

于 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 回答