面包屑导航PHP代码

PHP原生实现面包屑导航其实也很简单,因为“当前位置 面包屑导航”这种功能已经包含在PHP无限级分类中了,具体如下:

 

1、必须保证你已经了解并熟悉PHP无限级分类(代码完整版)

这是因为到时候我们会用上 CategoryTree.php 这个类的代码。

 

2、分类SQL查询语句

这里以Mysql数据为例子,我已经把相应的SQL查询语句封装成为了一个类,如下:

 

CategorySql.php

<?php
class CategorySql{
    public function select_all($mysqli){
        //查询无限级分类
        $sql_select = "SELECT `id`, `name`,`alias`, `parent_id` FROM `category`";
        $result = $mysqli->query($sql_select);
        $select_array = mysqli_fetch_all($result,MYSQLI_ASSOC);
        return $select_array;
    }

    //按分类目录别名查询
    public function select_alias($mysqli,$alias,$id='',$name='',$parent_id='',$description='',$seotitle='',$seokeywords='',$thumbnail='',$origin=''){
        $sql = "SELECT `id`,`name`,`parent_id`,`description`,`seo-title`,`seo-keywords`, `thumbnail`, `origin` FROM `category` WHERE `alias` = ?";
        $stmt=$mysqli->prepare($sql);
        $stmt->bind_param('s',$alias);
        $stmt->execute();
        $stmt->bind_result($id,$name,$parent_id,$description,$seotitle,$seokeywords,$thumbnail,$origin);
        $arr=[];
        while ($stmt->fetch()) {
            $arr['id'] = $id;
            $arr['name'] = $name;
            $arr['parent_id'] = $parent_id;
            $arr['description'] = $description;
            $arr['seo-title'] = $seotitle;
            $arr['seo-keywords'] = $seokeywords;
            $arr['thumbnail'] = $thumbnail;
            $arr['origin'] = $origin;
        }
        return $arr;

    }

 

3、PHP后端查询 得到 面包屑导航 分类数组 代码

Category.php

<?php
require_once ABSPATH . '../core/class/CategoryTree.php'; //引入无限极分类
require_once ABSPATH . '/home/model/CategorySql.php';//引入分类页面sql语句
   
$category = new CategorySql();
$category_select_all = $category->select_all($mysqli);//查所有的分类目录
////var_dump($category_select_all);exit;
        
$category_select_alias = $category->select_alias($mysqli,$category_pagenumeber);//以分类目录别名查询单个分类目录
//var_dump($category_select_alias);
        
$categorytree = new CategoryTree();
$breadcrumb = $categorytree->family_tree_reverse($category_select_all,$category_select_alias['id']); //得到面包屑
var_dump($breadcrumb);

 

打印结果如下:

array(3) {
  [0]=>
  array(4) {
    ["id"]=>
    string(2) "66"
    ["name"]=>
    string(13) "测试分类1"
    ["alias"]=>
    string(5) "test1"
    ["parent_id"]=>
    string(1) "0"
  }
  [1]=>
  array(4) {
    ["id"]=>
    string(2) "69"
    ["name"]=>
    string(15) "测试分类1-1"
    ["alias"]=>
    string(7) "test1-1"
    ["parent_id"]=>
    string(2) "66"
  }
  [2]=>
  array(4) {
    ["id"]=>
    string(2) "70"
    ["name"]=>
    string(17) "测试分类1-1-1"
    ["alias"]=>
    string(9) "test1-1-1"
    ["parent_id"]=>
    string(2) "69"
  }
}

 

4、PHP前端输出 面包屑导航 分类数组 代码

注意:输出html的时候,a标签这里必须要字符串拼接,否则你的a标签点击url链接路径是会存在BUG的。

 

Category_html.php

<div class="container" >
    <div class="row">
        <div class="col-12">

            <nav aria-label="breadcrumb">
                <ol class="breadcrumb" style="background-color: #f8f9fa;margin-bottom: 0;">
                    当前位置:
                    <?php foreach ($breadcrumb as $k => $v){
                        $alias .= $v['alias'].'/';
                        ?>
                    <li class="breadcrumb-item"><a href="/<?php echo $alias; ?>"><?php echo $v['name']; ?></a>
                    <?php }
                    ?>
                    <li class="breadcrumb-item active" aria-current="page">列表</li>
                </ol>
            </nav>
        </div>
    </div>
</div>

 

效果如下:当前位置 面包屑导航

 

查看html源码,结果如下:

 <nav aria-label="breadcrumb">
                <ol class="breadcrumb" style="background-color: #f8f9fa;margin-bottom: 0;">
                    当前位置:
                              <li class="breadcrumb-item"><a href="/test1/">测试分类1</a>
                              <li class="breadcrumb-item"><a href="/test1/test1-1/">测试分类1-1</a>
                              <li class="breadcrumb-item"><a href="/test1/test1-1/test1-1-1/">测试分类1-1-1</a>
                              <li class="breadcrumb-item active" aria-current="page">列表</li>
                </ol>
            </nav>

 

总结:

如果看了文章还有不能理解的?欢迎主动来联系我交流。再多说一句,前端输出html部份我用的是bootstrap实现的。

    A+
发布日期:2021年06月28日 15:57:13  所属分类:PHP
最后更新时间:2021-06-28 15:57:13
付杰
  • ¥ 298.0元
  • 市场价:498.0元
  • ¥ 498.0元
  • 市场价:598.0元
  • ¥ 199.0元
  • 市场价:899.0元
  • ¥ 1.0元
  • 市场价:9.9元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: