以前栏目很少,就用死办法做的(首页 -> 栏目的名字),现在栏目多了,渐渐二级栏目,三级栏目也来了,这样的方式显然不太合适,于是就改进了一下。也不难,利用一个递归函数就可以了。使用例子:
代码如下://当前位置-第一个参数 catID为当前栏目的ID,第二个参数为文章的标题,调用栏目当前位置时第二个参数为空即可。
$this->assign("Now_here",$this->Now_here($catID,$res['Title']));
实现代码:
代码如下:
//解释一下,栏目表category中的catID为栏目ID,catname为栏目名称,asmenu为栏目父级的ID,当为顶级栏目时,asmenu为0 。
protected function Now_here($catID,$ext=''){
$cat = M("category");
$here = '';
$uplevels = $cat->field("catid,catname,asmenu")->where("catid=$catid")->find();
if($uplevels['asmenu'] != 0)
$here .= $this->get_up_levels($uplevels['asmenu']);
$here .= ' -> ";
if($ext != '') $here .= ' -> '.$ext;
return $here;
}
protected function get_up_levels($ID){
$cat = M("category");
$here = '';
$uplevels = $cat->fIEld("catID,asmenu")->where("catID=$ID")->find();
$here .= ' -> ";
if($uplevels['asmenu'] != 0){
$here = $this->get_up_levels($uplevels['asmenu']).$here;
}
return $here;
}
附:另一个例子
代码如下:class IndexAction extends Action {
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;
}
}
以上是内存溢出为你收集整理的thinkphp实现面包屑导航(当前位置)例子分享全部内容,希望文章能够帮你解决thinkphp实现面包屑导航(当前位置)例子分享所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)