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
?
3 answers
Заменить
$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;
?>
Это может хорошо работать для меньшего числа категорий. Однако это может занять больше времени, если у вас большое количество категорий.