magento获取当前站点的所有产品分类列表.代码如下:
/**
* 组装菜单数据(递归子菜单)
* @param Varien_Data_Tree_Node $node
* @return array
*/
function nodeToArray(Varien_Data_Tree_Node $node) {
$result = array();
$result['category_id'] = $node->getId();
$result['parent_id'] = $node->getParentId();
$result['name'] = $node->getName();
$result['url'] = Mage::helper('catalog/category')->getCategoryUrl($node);
$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;
}
/**
* 获取所有菜单
* @return array
*/
function load_tree() {
$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('url')
// ->addAttributeToSelect('is_active')
->addAttributeToFilter('include_in_menu',1) //include_in_menu为1表示nclude in Navigation Menu为YES
->addAttributeToFilter('is_active',1); //添加过滤条件,is_active为1表示激活
$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'] . "";
print_tree($item['children'], $level);
}
}
$tree = load_tree();
var_export($tree['children'][0]['children']);
(责任编辑:好模板) |