以前栏目很少,就用死办法做的(首页 -> 栏目的名字),现在栏目多了,渐渐二级栏目,三级栏目也来了,这样的方式显然不太合适,于是就改进了一下。也不难,利用一个递归函数就可以了。
使用例子:
实现代码:
//解释一下,栏目表category中的catid为栏目id,catname为栏目名称,asmenu为栏目父级的id,当为顶级栏目时,asmenu为0 。
protected function now_here($catid,$ext=''){
$cat = m("category");
$here = '<a href="//www.jb51.net">首页</a>';
$uplevels = $cat->field("catid,catname,asmenu")->where("catid=$catid")->find();
if($uplevels['asmenu'] != 0)
$here .= $this->get_up_levels($uplevels['asmenu']);
$here .= ' -> <a href="/cat_'.$uplevels['catid'].'.html">'.$uplevels['catname']."</a>";
if($ext != '') $here .= ' -> '.$ext;
return $here;
}
protected function get_up_levels($id){
$cat = m("category");
$here = '';
$uplevels = $cat->field("catid,catname,asmenu")->where("catid=$id")->find();
$here .= ' -> <a href="/cat_'.$uplevels['catid'].'.html">'.$uplevels['catname']."</a>";
if($uplevels['asmenu'] != 0){
$here = $this->get_up_levels($uplevels['asmenu']).$here;
}
return $here;
}
附:另一个例子
public function cat() {
load('extend'); // 加载 extend.php 文件
// 取出所有的分类
$categories = m('categories')->select();
$nav_array = array();
$this->getnavcrumbs($categories, 2120, $nav_array);
dump($nav_array);
// 取出所有分类(并构造成一棵树)
// $categorytree = list_to_tree($categories, 'categories_id', 'parent_id');
}
/**
* 根据分类id向上回溯构造面包屑
* @param $categories 由所有分类组成的数组
* @param $categoryid 要进行向上回溯用的分类id
* @param $navcrumbs 用于保存结果的数组,传入一个空数组就好
*/
public function getnavcrumbs($categories, $categoryid, &$navcrumbs) {
$category = list_search( $categories, array('categories_id'=>$categoryid) ) ;
$category = $category[0];
$parent_id = $category['parent_id'];
$categories_id = $category['categories_id'];
if( $parent_id != 0 ) { // 这里的 0 是根节点id(root节点id)
$this->getnavcrumbs($categories, $parent_id, $navcrumbs);
}
$navcrumbs[$categories_id] = $category;
}
}
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
使用Entrust扩展包在laravel 中实现RBAC的功能
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
网友评论