I've been able to instantiate a category object to retrieve its name, but when I use the getUrl
method it isn't returning a URL to the category listing page, or anything at all
<?php
$children = Mage::getModel('catalog/category')->getCategories(3);
foreach ($children as $category):
echo '<li><a href="' . $category->getUrl() . '">' . $category->getName() . '</a></li>';
endforeach;
?>
The code above results in HTML output of
<li><a href="">name of sub-cat</a></li>`
Does anyone know how I can get the URL for a category page from a catalog/category
object?
The problem is
getCategories()
normally returns aVarien_Data_Tree_Node_Collection
rather than a collection of categories. Instead, you can do this:The fourth parameter is
$asCollection
, passing atrue
means you are returned aMage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection
which you were probably expecting. The rest should work now.Replace
with
You may load every category within the foreach loop and then get the category URL.
This might work fine for less number of categories. However, this might take more time if you have large number of categories.