Home php教程 php手册 thinkphp实现面包屑导航(当前位置)例子分享

thinkphp实现面包屑导航(当前位置)例子分享

Jun 13, 2016 am 09:35 AM
thinkphp Breadcrumbs

以前栏目很少,就用死办法做的(首页 -> 栏目的名字),现在栏目多了,渐渐二级栏目,三级栏目也来了,这样的方式显然不太合适,于是就改进了一下。也不难,利用一个递归函数就可以了。

使用例子:

复制代码 代码如下:


//当前位置-第一个参数 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 .= ' -> '.$uplevels['catname']."";
 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 .= ' -> '.$uplevels['catname']."";
 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;
    }

}


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to run thinkphp project How to run thinkphp project Apr 09, 2024 pm 05:33 PM

How to run thinkphp project

There are several versions of thinkphp There are several versions of thinkphp Apr 09, 2024 pm 06:09 PM

There are several versions of thinkphp

How to run thinkphp How to run thinkphp Apr 09, 2024 pm 05:39 PM

How to run thinkphp

How to install thinkphp How to install thinkphp Apr 09, 2024 pm 05:42 PM

How to install thinkphp

Which one is better, laravel or thinkphp? Which one is better, laravel or thinkphp? Apr 09, 2024 pm 03:18 PM

Which one is better, laravel or thinkphp?

Development suggestions: How to use the ThinkPHP framework to implement asynchronous tasks Development suggestions: How to use the ThinkPHP framework to implement asynchronous tasks Nov 22, 2023 pm 12:01 PM

Development suggestions: How to use the ThinkPHP framework to implement asynchronous tasks

ThinkPHP6 data encryption and decryption: protecting sensitive data security ThinkPHP6 data encryption and decryption: protecting sensitive data security Aug 25, 2023 pm 10:52 PM

ThinkPHP6 data encryption and decryption: protecting sensitive data security

ThinkPHP6 backend management system development: realizing backend functions ThinkPHP6 backend management system development: realizing backend functions Aug 27, 2023 am 11:55 AM

ThinkPHP6 backend management system development: realizing backend functions

See all articles