Typecho统计当前分类和子分类文章总数 - 夏目友人帐

Typecho统计当前分类和子分类文章总数

"夏目贵志" 发表于: 2018年04月07日

typecho发布一篇文章,然后只勾选子分类,然后发布。
父分类输出分类的文章数量,并没有包含这个新发布的文章。

于是乎,QQ爹垃圾博主啊用了点时间(一个半小时)写出了个函数,来解决这个问题

function fenleinum($id){
$db = Typecho_Db::get();
$po=$db->select('table.metas.count')->from ('table.metas')->where ('parent = ?', $id)->orWhere('mid = ? ', $id);
$pom = $db->fetchAll($po);
$num = count($pom);
$shu = 0;
for ($x=0; $x<$num; $x++) {
$shu=$pom[$x]['count']+$shu;
}
echo $shu;
}

前台调用,可以在分类列表循环中输入下面代码,分类mid需要根据自己的代码自填

<?php fenleinum(分类mid); ?>

原理,首先上一张数据库截图
数据库截图
parent等于0的分类就是父分类,为x(x代表非零整数)的为mid等于x的分类的子分类

count列则是分类的文章总数量

然后我们逐条分析下函数

function fenleinum($id){
$db = Typecho_Db::get();
//链接数据库
$po=$db->select('table.metas.count')->from ('table.metas')->where ('parent = ?', $id);
//查询父分类下的子分类
$pom = $db->fetchAll($po);
//转为数组
$num = count($pom);
//含有的子分类数量
$shul = 0;
//初始值
for ($x=0; $x<$num; $x++) {
$shul=$pom[$x]['count']+$shul;
}
//循环将子分类的文章数量相加
$shu=$db->fetchAll($db->select('table.metas.count')->from ('table.metas')->where ('mid = ?', $id))[0]['count']+$shul;
//将父分类的文章数量加上所有子分类的文章数量
echo $shu;
//输出
}

额,因为是渣渣博主,所有方法可能不太文雅,也许数据库将查询结果列相加比较好,但是博主不会。

转载自:https://qqdie.com/archives/category-num.html

typecho发布一篇文章,然后只勾选子分类,然后发布。
父分类输出分类的文章数量,并没有包含这个新发布的文章。

于是乎,QQ爹垃圾博主啊用了点时间(一个半小时)写出了个函数,来解决这个问题

function fenleinum($id){
$db = Typecho_Db::get();
$po=$db->select('table.metas.count')->from ('table.metas')->where ('parent = ?', $id)->orWhere('mid = ? ', $id);
$pom = $db->fetchAll($po);
$num = count($pom);
$shu = 0;
for ($x=0; $x<$num; $x++) {
$shu=$pom[$x]['count']+$shu;
}
echo $shu;
}

前台调用,可以在分类列表循环中输入下面代码,分类mid需要根据自己的代码自填

<?php fenleinum(分类mid); ?>

原理,首先上一张数据库截图
数据库截图
parent等于0的分类就是父分类,为x(x代表非零整数)的为mid等于x的分类的子分类

count列则是分类的文章总数量

然后我们逐条分析下函数

function fenleinum($id){
$db = Typecho_Db::get();
//链接数据库
$po=$db->select('table.metas.count')->from ('table.metas')->where ('parent = ?', $id);
//查询父分类下的子分类
$pom = $db->fetchAll($po);
//转为数组
$num = count($pom);
//含有的子分类数量
$shul = 0;
//初始值
for ($x=0; $x<$num; $x++) {
$shul=$pom[$x]['count']+$shul;
}
//循环将子分类的文章数量相加
$shu=$db->fetchAll($db->select('table.metas.count')->from ('table.metas')->where ('mid = ?', $id))[0]['count']+$shul;
//将父分类的文章数量加上所有子分类的文章数量
echo $shu;
//输出
}

额,因为是渣渣博主,所有方法可能不太文雅,也许数据库将查询结果列相加比较好,但是博主不会。

转载自:https://qqdie.com/archives/category-num.html

添加新评论

已有 2 条评论

  1. 可以加个代码高亮的插件搞,看过去都是黑黑的唉

    1. @Laomo

      用了个轻量级插件!~