Magento获得全部分类

magento获得全部的菜单分类,这段代码的好处就是可以放在任意的phtml文件中,并且做了诸多的条件判断。我们可以参考灵活运用,供初学者参考。

此代码来自互联网:http://www.magentocommerce.com/boards/viewthread/24947/P15/

if you just want, like me , get all categories with hierarchy + id in order to use in datasheet
create a file “myfile.php” on the root magento folder and put the code below.
All level are marked by *. Use it as separator in excel.

 

<?php require_once $_SERVER['DOCUMENT_ROOT']."/app/Mage.php";
Mage::app('1');

function 
nodeToArray(Varien_Data_Tree_Node $node)
{
$result 
= array();
$result['category_id'] = $node->getId();
$result['parent_id'] = $node->getParentId();
$result['name'] = $node->getName();
$result['is_active'] = $node->getIsActive();
$result['position'] = $node->getPosition();
$result['level'] = $node->getLevel();
$result['children'] = array();

foreach (
$node->getChildren() as $child) {
$result[
'children'][] = nodeToArray($child);
}

return $result;
}

function load_tree() {

$tree 
= Mage::getResourceSingleton('catalog/category_tree')
->
load();

$store = 1;
$parentId = 1;

$tree = Mage::getResourceSingleton('catalog/category_tree')
->
load();

$root = $tree->getNodeById($parentId);

if(
$root && $root->getId() == 1) {
$root
->setName(Mage::helper('catalog')->__('Root'));
}

$collection 
= Mage::getModel('catalog/category')->getCollection()
->
setStoreId($store)
->
addAttributeToSelect('name')
//->addAttributeToSelect('id')
->addAttributeToSelect('is_active');

$tree->addCollectionData($collection, true);

return 
nodeToArray($root);

}

function print_tree($tree,$level) {
$level 
++;
foreach(
$tree as $item) {
echo str_repeat("*", $level).$item['name'].'*'.$item['category_id']."<br>";
print_tree($item['children'],$level);

}
}

$tree 
= load_tree();
print_tree($tree['children'],0);

posted on 2011-06-10 12:08  E-commerce Leopard  阅读(397)  评论(0)    收藏  举报

导航