首页 / 帖子
drupal让taxonomy term 按层次显示,大家都用什么方法或者模块?

drupal让taxonomy term 按层次显示,大家都用什么方法或者模块?
显示效果如图:
肉类->猪->猪肉,排骨等等

4个答案
闻涛
发布于:2016-09-28 10:38

默认的Drupal的taxonomy就支持这种多级的term,这个感觉只是展示形式的问题,修改一下主题即可。
如果输出不满意,可以自己写一个block或者page。

另外一种做法就是给taxonomy本身加一个taxonomy字段,让本身的taxonomy可以支持被分类。

赵高欣
发布于:2016-09-29 02:07

不写代码的话用Views Tree模块也可以


发布于:2016-09-29 14:15

已经解决,因为要显示多个三层结构,并且把一些分类合并,如图

食材(1级)->肉类(2级)->猪(3级)-猪肉(4级)、食材->水果->苹果、等等
用Views的显示的并不理想,所以不能偷懒了,在主题的template.php中写了一个调取类,然后重写page。
显示效果 http://www.douguo.com/shicai

Amanda Song
发布于:2016-10-13 14:07

//取出导航菜单
$a = $this->entityManager()->getStorage('taxonomy_term')->loadTree('product_type', 0, 2, '');
//将对象转换
$a = $this->object_array($a);
$nav = [];
//遍历对象并转换为需求格式
foreach ($a as $k => $v) {
   if ($nav[$v['parents'][0]]) {
       $nav[$v['parents'][0]]['child'][$v['tid']]['tid'] = $v['tid'];
       $nav[$v['parents'][0]]['child'][$v['tid']]['name'] = $v['name'];
   } else {
       $nav[$v['tid']]['tid'] = $v['tid'];
       $nav[$v['tid']]['name'] = $v['name'];
       $nav[$v['tid']]['child'] = [];
   }
}

这里是我自定义的去一级分类二级分类并且进行排序的方法