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?

Author: Alan Storm, 2011-05-05

3 answers

Заменить

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

С

$children = Mage::getModel('catalog/category')->load(3)->getChildrenCategories();
 16
Author: Tim Bezhashvyly, 2011-05-05 12:33:53

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

 6
Author: clockworkgeek, 2011-05-05 12:00:17

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

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

 3
Author: Mukesh Chapagain, 2011-05-05 11:05:48