Magento 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>` 

Кто-нибудь знает, как я могу получить URL-адрес для страницы категории из объекта catalog/category ?

замещать

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

с

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

Проблема заключается в том, что 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 который вы, вероятно, ожидали. Остальное должно работать сейчас.

Вы можете загружать каждую категорию в цикл 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; ?> 

Это может работать нормально для меньшего количества категорий. Однако, если у вас есть большое количество категорий, это может занять больше времени.