生成分类目录树(Category Tree)
$rootcatId = Mage::app()->getStore()->getRootCategoryId();
$categories = Mage::getModel('catalog/category')->getCategories($rootcatId);
function get_categories($categories)
{
$array = '<ul>';
foreach ($categories as $category) {
$cat = Mage::getModel('catalog/category')->load($category->getId());
$count = $cat->getProductCount();
$array .= '<li>'
. '<a href="' . Mage::getModel('catalog/category')->load($category->getId())->getUrl(). '">'
. $category->getName()
. "(".$count.")</a>";
if ($category->hasChildren()) {
$children = Mage::getModel('catalog/category')
->getCategories($category->getId());
$array .= get_categories($children);
}
$array .= '</li>';
}
return $array . '</ul>';
}
echo get_categories($categories);
我个人的用法:
function get_categories($categories,$level=0)
{
$array = "\n".'<ul class="'.(!$level ? 'nav navbar-nav' :'dropdown-menu dropdown-menu-level-'.$level).'">';
foreach ($categories as $category)
{
// $cat = Mage::getModel('catalog/category')->load($category->getId());
// $count = $cat->getProductCount();
// $array .= "\n".'<li'.($category->hasChildren()?' class="dropdown-submenu"':'').'>'. '<a href="' . Mage::getUrl($category->getUrlPath()). '" class="dropdown-toggle" data-toggle="dropdown">'. $category->getName(). "(".$count.")</a>";
$array .= "\n".'<li'.($category->hasChildren()?' class="dropdown-submenu dropdown-submenu-level-'.$level.'"':'').'>';
$array .= ' <a href="' . Mage::getModel('catalog/category')->load($category->getId())->getUrl(). '" class="dropdown-toggle" data-toggle="dropdown">';
$array .= $category->getName().($category->hasChildren()?'<span class="glyphicon glyphicon-play glyphicon-level-'.$category->getLevel().'" aria-hidden="true"></span>':'');
$array .= ' </a>';
if ($category->hasChildren()) {
$children = Mage::getModel('catalog/category')->getCategories($category->getId());
$array .= get_categories($children,$category->getLevel());
}
$array .= '</li>'."\n";
}
return $array . '</ul>'."\n";
}
打印所有类别的方法如下:
//获取所有激活状态的分类模型集合
$categories = Mage::getModel( 'catalog/category' )->getCollection()
->addAttributeToSelect( '*' )
// then the magic happens here:
//->addAttributeToFilter('level', array('eq'=>2))
->addIsActiveFilter();
//循环Collection,并填充数组,可以根据需要的数据进行填充,本例以分类ID作为key,对应的值作为value
$allCategory = array ();
foreach ( $categories as $category ) {
$allCategory [ $category->getParentId()][$category->getId()] = $category ->getName().'('.$category->getLevel().')';
}
echo '==><pre>'; print_r($allCategory); echo '</pre>';
获取当前类别的子类别 get subcategories of current / parent category in magento
Method 1:
if you want to get subcategories of current category:
$_currentCategoryId = Mage::registry('current_category')->getId();
$childcategories= Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect("*")->addFieldToFilter('parent_id', $_currentCategoryId)->addAttributeToSort('name', 'ASC');
foreach($childCategories as $childCategory)
echo $childCategory->getName();
endforeach;
Method 2:
if you want to get subcategories of specific category:
$parentCategoryId = 3;
$children = Mage::getModel('catalog/category')->getCategories($parentCategoryId);
foreach ($children as $category) {
echo $category->getName();
}