Magento getUrl不使用目录/类别对象?

时间:2011-05-04 23:12:52

标签: php parsing magento e-commerce geturl

我已经能够实例化一个类别对象来检索它的名称,但是当我使用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?

3 个答案:

答案 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;
?>

这可能适用于较少数量的类别。但是,如果您有大量类别,则可能需要更长时间。