QQ爹博客 QQ爹博客

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

in Typecho 文章转载请注明来源!

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

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

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); ?>

原理,首先上一张数据库截图

数据库截图.png

parent等于0的分类就是父分类,为x(x代表非零整数)的为mid等于x的分类的子分类
count列则是分类的文章总数量

这样我们就可以根据规律进行查询计算了
例如:
我们要查询mid=1的分类文章数量包含当前分类及旗下的子分类?
处理:
搜索查询parent等于1的行和mid等于1的行
然后读取每行count的值
最后通过for循环将搜索到的行的count值想加,输出。

额,因为是渣渣博主,所有方法可能不太文雅,用数据库语句将查询结果列相加比较好,但是博主不会,只好用for循环啦。

jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

函数文章文章数量
发表新评论
  • ]
已有 11 条评论
  1. 后宫学长
    后宫学长 10Chrome 65
    回复

    操作数据库?

    1. Jrotty
      Jrotty本文作者 10Chrome 65
      回复

      @后宫学长 只是读取哈,以前一点都不碰数据库的我,现在:数据库真好用

      1. 后宫学长
        后宫学长 10Chrome 65
        回复

        @Jrotty 不用纠结TP的问题了……

  2. 夏目贵志
    夏目贵志 10Chrome 65
    回复

    可以 可以 晚点转载存起来 

    1. Jrotty
      Jrotty本文作者 10Chrome 65
      回复

      @夏目贵志 这点玩意我居然写了一个多小时

      1. 夏目贵志
        夏目贵志 10Chrome 65
        回复

        @Jrotty 辛苦了!!你让我 我可以给你写10年!

        1. Jrotty
          Jrotty本文作者 10Chrome 65
          回复

          @夏目贵志 优化了下,查询语句省了一条

          1. 夏目贵志
            夏目贵志 10Chrome 65
            回复

            @Jrotty 打尻

  3. 梁兴健
    梁兴健 7Chrome 65
    回复

      widget('Widget_Metas_Category_List') ->parse('
    • {name} ({count})
    • '); ?>

    1. Jrotty
      Jrotty本文作者 10Chrome 65
      回复

      @梁兴健 typecho发布一篇文章,然后只勾选子分类,然后发布。
      父分类输出分类的文章数量,并没有包含这个新发布的文章。https://github.com/typecho/typecho/issues/597

      1. 梁兴健
        梁兴健 7Chrome 65
        回复

        @Jrotty 额,好吧,我没认真看。原来父分类不包含子分类文章的啊

前篇 后篇
雷姆
拉姆