今天有主题使用的小伙伴来问在z-blog中通过分类获取上级分类的方法,以防以后再重复回答这个问题,就写个教程吧,有需要的可以拿走。

查看zblog中获取上级分类的代码

这部份内容,如果不是开发者可以直接跳过,这里只是说明一下在zblog中默认获取当前分类的上级分类的代码。

打开文件 zb_system/function/lib/category.php  142行左右

if ($name == 'Parent') {
    if ($this->ParentID == 0) {
        return;
    } else {
        return $zbp->categories[$this->ParentID];
    }
}

上面的含义

1、调用分类数据时,会有一个Parent对象来输出当前类的上级分类

2、如果有上级分类就会通过 Parent 对象来输出上级分类的数据

3、如果没有上级分类,则返回空

z-blog模版中调用分类及上级分类的代码

当前分类代码:

分类模版中调用当前分类时,直接输出数据即可。

{$category.Url} 当前分类的URL
{$category.Name} 当前分类的名称

判断是否有上级分类,并输出

{if $category.Parent}
{$category.Parent.Url}
{$category.Parent.Name}
{/if}

注意:以上代码只能用到主题分类模版中,在z-blog后台编译模版后,在会缓存文件中自动生成普通的php代码。

z-blog获取分类的代码

1、z-blog通过分类ID获取分类数据的代码

<?php
$id = '1';
$cate = $zbp->GetCategoryByID($id);
echo $cate->Url; //分类的URL
echo $cate->Name; //分类的名称
//判断是否有上级分类
if($cate->Parent){
    echo $cate->Parent->Url; //上级分类的URL
    echo $cate->Parent->Name; //上级分类的名称
}
?>

2、z-blog通过分类的名称获取分类数据的方法

QQ截图20190724142950.jpg

<?php
$name = '笔记';
$cate = $zbp->GetCategoryByName($name);
//代码省略,参考上面的示例
?>

3、zblog通过分类别名获取分类数据的代码

<?php
$name = 'biji';
$cate = $zbp->GetCategoryByAlias($name);
//代码省略,参考上面的示例
?>

4、以类的形式获取分类的数据

$id = 1; //这是分类的ID
$cate = new Category();
$cate->LoadInfoByID($id);
if($cate->ID){
    echo $cate->Url; //分类的URL
    echo $cate->Name; //分类的名称
    //判断是否用上级分类
    if($cate->Parent){
        echo $cate->Parent->Url; //上级分类的URL
        echo $cate->Parent->Name; //上级分类的名称
    }
}else{
    echo '分类数据不存在';
}

注意:

1、以上示例中的代码,可以用到主题或插件的后台逻辑中去,不能用到主题模版文件中,如果使用需要改成模版的语法。

2、如果在某个函数中调用以上的代码,必需声明全局变量,$zbp

3、无论是通过ID,名称,别名获取分类的数据,必需判断返回的结果是否为空。

4、具体的可以参考以下代码

例:z-blog判断指定的分类是否存在

函数

function IsCate($id){
    //飞鸟慕鱼博客
    //声明全局变量 $zbp;
    global $zbp; 
    $cate = $zbp->GetCategoryByID($id);
    //判断分类是否存在
    //如果存在, $cate->ID 为分类的ID
    //如果不存在,$cate->ID 为0
    if($cate->ID){
        return 存在;
    }
    return 不存在;
}

调用方法:

判断ID为4的分类是否存在

echo IsCate(4);