magento如何获取指定分类的所有上级父类(级联至顶级)
2017-09-06 12:14
363 查看
项目需求,要在每一个分类里把分类树在页面显示出来
百度、google后都没有很好的结果,都说如何获取子分类!
这对于我来说,都是没用!
我想要的是知道了指定分类,获取指定分类的上级直及至顶级的分类树信息
查询无结果,那就只有看magento的源代码了,有那么一个Mage::getResourceModel('catalog/category_tree')模块是处理分类树信息,里面的方法挺多,但也没有针对获取分类树信息,
取子类倒是有很多,然后还有一个很有意思的方法loadBreadcrumbsArray
这个方法就是给一个path参数后,会将相应的分类返回来,它就能达到我的要求,不用我再循环load分类获取分类信息了
那么怎么处理呢?
magento分类Mage::getModel('catalog/category')有一个很重要的分类树Path信息
getPath()返回的是当前分类的分类树信息结果是/1/2/126/320
注:取分类的父分类$category->getParentId()即可
那么就可以通过loadBreadcrumbsArray(category->getPath())拿到整个分类树
代码如下:
loadBreadcrumbsArray方法很好用能满足我的需求,但却有个比较大的问题,magento1.9版本下loadBreadcrumbsArray都不兼容Use Flat Catalog Category,在用Use Flat Catalog Category优化magento时,无解,要么改magento核心,要么就只能用其它方面获取分类树,
一般情况下,建议别改核心代码,就算改核心代码也用重写来改核心的代码,不建议直接改Mage/code下面的代码
我本人最后也只能用循环load分类处理了
百度、google后都没有很好的结果,都说如何获取子分类!
这对于我来说,都是没用!
我想要的是知道了指定分类,获取指定分类的上级直及至顶级的分类树信息
查询无结果,那就只有看magento的源代码了,有那么一个Mage::getResourceModel('catalog/category_tree')模块是处理分类树信息,里面的方法挺多,但也没有针对获取分类树信息,
取子类倒是有很多,然后还有一个很有意思的方法loadBreadcrumbsArray
这个方法就是给一个path参数后,会将相应的分类返回来,它就能达到我的要求,不用我再循环load分类获取分类信息了
那么怎么处理呢?
magento分类Mage::getModel('catalog/category')有一个很重要的分类树Path信息
getPath()返回的是当前分类的分类树信息结果是/1/2/126/320
注:取分类的父分类$category->getParentId()即可
那么就可以通过loadBreadcrumbsArray(category->getPath())拿到整个分类树
代码如下:
$categoty = Mage::getModel('catalog/category')->load($id); //id=当前分类id,分类页面$this->getId()好像能拿,在分类页面可以不用此句,直接$this->getPath()就能获取path信息 $tree = Mage::getResourceModel('catalog/category_tree');//加载分类tree模块 $category_tree = $tree->loadBreadcrumbsArray($categoty->getPath());//获取相应分类信息 var_dump($category_tree)//就是所有分类的arr
loadBreadcrumbsArray方法很好用能满足我的需求,但却有个比较大的问题,magento1.9版本下loadBreadcrumbsArray都不兼容Use Flat Catalog Category,在用Use Flat Catalog Category优化magento时,无解,要么改magento核心,要么就只能用其它方面获取分类树,
一般情况下,建议别改核心代码,就算改核心代码也用重写来改核心的代码,不建议直接改Mage/code下面的代码
我本人最后也只能用循环load分类处理了
$path_id = explode('/',$categoty->getPath());//将当前分类的分类树转为数组 $path_arr = array_slice($path_id,2); //去除前两个不必要的类,由于前两个urlpath为无效url路径:root-catalog、/default-category, $category_tree = array(); foreach ($path_arr as $key => $value) { $cata = Mage::getModel('catalog/category')->load($value); $category_tree[$key]['entity_id'] = $value; $category_tree[$key]['name'] = $cata->getName(); $category_tree[$key]['level'] = $cata->getLevel(); $category_tree[$key]['url'] = $cata->getUrlPath(); } var_dump($category_tree)//就是所有分类的arr
相关文章推荐
- Magento获取指定分类下的所有子分类信息
- Magento如何获取产品所在的所有分类?
- magento -- 如何删除所有商品和分类
- magento - 通过如何在magento的模板中获取到产品或产品分类的instance呢谈magento的helper类机制
- magento获取指定目录分类的子分类
- 算法积累:解决如何获取指定文件夹路径或者文件路径下所有子文件后缀为.h .m .c的文本的行数
- magento获取指定目录分类的子分类
- Magento里显示指定分类的所有子分类
- magento 获取所有分类
- magento获取所有分类列表
- magento获取当前站点的所有产品分类列表
- magento -- 如何获取所有启用的支付模块
- Asp.Net 如何获取所有控件&如何获取指定类型的所有控件
- [5月3日的脚本] 如何获取某指定数据库中所有的存储过程
- 如何用C#获取指定文件夹下所有文件名?
- c#如何获取指定容器控件下的所有同类型控件
- SQL 无限分类,关于如何取某ID项所有的子类和顶级祖先类
- Magento获取指定分类下的产品和获取子分类及产品数量
- Magento获取所有分类列表
- Magento获取指定分类下的产品和获取子分类及产品数量