magento 得到树形结构的分类列表

<?php

?>

<?php

class Lehui_AllCategoryList_Block_List extends Mage_Core_Block_Template

{

protected $_store;

protected $_baseUrl;

protected function _construct(){

parent::_construct();

$this->_init();

}

protected function _init(){

$this->_store=Mage::app()->getStore();

$this->_baseUrl=Mage::getBaseUrl();

}

public function getAllCategory(){

$parentId = 1;

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

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

if($root && $root->getId() == 1) {

$root->setName(Mage::helper(‘catalog‘)->__(‘Root‘));

}

foreach(get_class_methods($tree) as $item){

// echo $item,"</br>";

}

$collection = Mage::getModel(‘catalog/category‘)->getCollection()

->addAttributeToSelect(‘name‘)

->addAttributeToSelect(‘url_path‘)

->addAttributeToSelect(‘path‘)

->addAttributeToSelect(‘is_active‘)

->addIsActiveFilter();

//echo $collection->getSelectSql();//->addPathFilter(‘1\\/‘.$this->_store->getRootCategoryId().‘\\/‘)

foreach(get_class_methods($collection) as $item){

//echo $item,"</br>";

}

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

$root=$this->_nodeToArray($root);

$this->_print_tree($root[‘children‘],0);

}

protected function _print_tree($tree,$level){

$level++;

foreach($tree as $item){

if($level>1&preg_match(‘/1\\/‘.$this->_store->getRootCategoryId().‘\\//‘,$item[‘path‘])){

echo str_repeat(‘&nbsp;&nbsp;‘, $level).‘<a href="‘.$item[‘url‘].‘">‘.$item[‘name‘]."</a><br>";

}

$this->_print_tree($item[‘children‘],$level);

}

}

protected 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[‘url‘]=$this->_baseUrl.$node->getData(‘url_path‘);

$result[‘path‘]=$node->getData(‘path‘);

$result[‘children‘] = array();

foreach ($node->getChildren() as $child) {

$result[‘children‘][] = $this->_nodeToArray($child);

}

return $result;

}

}

时间: 2024-10-23 08:28:10

magento 得到树形结构的分类列表的相关文章

Delphi中根据分类数据生成树形结构的最优方法

一. 引言:    TreeView控件适合于表示具有多层次关系的数据.它以简洁的界面,表现形式清晰.形象,操作简单而深受用户喜爱.而且用它可以实现ListView.ListBox所无法实现的很多功能,因而受到广大程序员的青睐.    树形结构在Windows环境中被普遍应用,但在数据库开发中面对层次多.结构复杂的数据,如何快速构造树形目录并实现导航呢?    二. 实现关键技术:    在Delphi提供的控件中包含了TreeView控件,但树的具体形成还需要用户编写代码.即它的列表项要在程序

通用列表数据转化为树形结构

近期做项目用的是JQuery  easyUI 控件, 尽管非常强大,可是高级控件对于数据的格式要求比較严格遇到 例如以下问题 1.使用comboTree 控件   绑定树形的组织结构   可是 数据库查到的数据格式是 列表形式,并不符合  combotree的数据结构 以下是我的数据和  combotree 数据个对照 通用的数据结构   命名A "[{"UnitID":"7cf57594a7074c46b94dcd6c985b0ced","Un

递归、嵌套for循环、map集合方式实现树形结构菜单列表查询

有时候, 我们需要用到菜单列表,但是怎么样去实现一个菜单列表的编写呢,这是一重要的问题. 比如我们需要编写一个树形结构的菜单,那么我们可以使用JQuery的zTree插件:http://www.treejs.cn/v3/main.php#_zTreeInfo 例如现在需要编写一个这样的菜单列表.那么就可以使用JQuery的zTree插件. 先看一下数据库表结构. CREATE TABLE `permission` ( `id` int(11) NOT NULL AUTO_INCREMENT, `

c# List列表数据转换成树形结构

把List列表结构 转换成树形结构 /// <summary> /// 构造树形Json /// </summary> public static class TreeJson { /// <summary> /// 转换树Json /// </summary> /// <param name="list">数据源</param> /// <param name="parentId">

Hibernate中,基于Annotation的简单树形结构的实现

在系统设计中,经常用到递归性质的树形结果,比如菜单.多级分类等,一般是在同一个表中定义父子关系实现这种结构. 下面是在Hibernate中,基于Annotation的简单树形结构的实现: 第一步:创建Entity类,并添加注解实现关联关系    ps: 主要是利用@ManyToOne 和 @OneToMany 配置在同一个Entity类中实现树形递归的结构.hibernate注解形式比在xml配置更加简洁 TreeNode.java 1 package com.hfut.hibernate; 2

salesforce 零基础学习(七十)使用jquery tree实现树形结构模式

项目中UI需要用到树形结构显示内容,后来尽管不需要做了,不过还是自己做着玩玩,mark一下,免得以后项目中用到. 实现树形结构在此使用的是jquery的dynatree.js.关于dynatree的使用可以参考:http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html#h4.2 对于树形结构,这里不做太多介绍,树一般需要一个根节点,根节点下面可以有很多子节点或者叶子节点,子结点也可以包含叶子结点或者子节点.我们在设计表结构的时候可以考虑自连接操作

无限树形结构的数据库表设计

前言: 无限树形结构的数据库表设计的是否合理,直接影响到UI层是否方便根据树来查询关联的数据. 1.表字段: F_BtEd2kTypeId int Unchecked F_Name nvarchar(50) Checked F_ParentTypeId nvarchar(50) Checked F_Code nvarchar(50) Checked F_RecordStatus int Checked 2.表数据: 3.说明: 如2所示, 1)如果上表的数据关联上了一张表A,通过BtEd2kTy

java 树形结构工具类

   好久就想写博客了,苦苦因为没时间...没关系.从现在开始,每天我都会努力抽出点时间来进行做一次总结.把我认为在项目需求中认为很有用的东西,展示给大家,希望大家一起学习,一起进步.第一次做总结,写的不好的,提出来一起学习,谢谢.    分析:   在业务需求总,我们总会碰到一些业务.比如:对上下级的用户关系进行遍历,对资源权限进行遍历...等等.这些业务非常常见.在同一个项目中,他的代码遍历都是类似的,为了更高效的复用代码,我们有必要进行深成次的封转.下面是我花了一点时间进行封装,有需要直接

YbSoftwareFactory 代码生成插件【十八】:树形结构下的查询排序的数据库设计

树形结构的排序在中国特色下十分普遍也非常重要,例如常说的五大班子,党委>人大>政府>政协>纪委,每个班子下还有部门,岗位,人员,最终排列的顺序通常需要按权力大小.重要性等进行排列,顺序排列不好可是重大的罪过,领导很生气,后果很严重.这种排序方式本质上就是典型的树形结构深度排序,但在数据库中很难直接通过SQL语句简单高效地进行处理,更不用说还要支持不同类型数据库了. 当前解决此类问题,主要有两种方法. 1. 排序码方式 原理:在每个树形节点上均设置一个排序码,排序码通常是一个字符串并