夏目友人帐.
30/03/2018 作品
27/03/2018 友人
27/03/2018 关于

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

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

文章作者:QQ爹

原文链接:https://qqdie.com/archives/category-num.html

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


已有 4 条评论


  1. 云武

    没发现内容都是双份吗?

    云武  2019年1月21日回复
    1. 夏目贵志

      字段导致的 抱歉

      夏目贵志 admin 2019年2月9日回复
  2. Laomo

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

    Laomo  2018年4月8日回复
    1. 夏目贵志

      用了个轻量级插件!~

      夏目贵志 admin 2018年4月8日回复

发表新评论


最后更新于 2019 年 02 月 09 日.
Contact me at lvchuanxing@gmail.com. 回到顶部