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