我已经能够实例化一个类别对象来检索它的名称,但是当我使用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?
答案 0 :(得分:16)
替换
$children = Mage::getModel('catalog/category')->getCategories(3);
与
$children = Mage::getModel('catalog/category')->load(3)->getChildrenCategories();
答案 1 :(得分:6)
问题是getCategories()
通常会返回Varien_Data_Tree_Node_Collection
而不是类别集合。相反,你可以这样做:
$children = Mage::getModel('catalog/category')->getCategories(3, 0, false, true);
第四个参数是$asCollection
,传递true
表示您返回Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection
,这可能是您所期待的。其余的应该现在可以工作。
答案 2 :(得分: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;
?>
这可能适用于较少数量的类别。但是,如果您有大量类别,则可能需要更长时间。