之前写过类似文章《typecho 显示当前作者文章总数量》,但是实现方法明显不太好。所以今天写个函数来获取吧!

functions.php中加入如下函数

function allpostnum($id){
$db = Typecho_Db::get();
$postnum=$db->fetchRow($db->select(array('COUNT(authorId)'=>'allpostnum'))->from ('table.contents')->where ('table.contents.authorId=?',$id)->where('table.contents.type=?', 'post'));
$postnum = $postnum['allpostnum'];
return $postnum;
}

显示当前作者文章总数量调用代码如下(适用于post.php,author.php,或者index.phpwhile循环中等等)

<?php echo allpostnum($this->author->uid); ?>

显示特定uid作者文章总数量调用代码如下(适用于任意模板文件)

<?php echo allpostnum(1); ?>
//数字1改成对应作者的uid即可

之前不写函数是以因为我不会哈,昨天研究下数据库,发现这玩意没那么复杂,挺有趣的233!

代码解析

$db = Typecho_Db::get();
//获取数据库
$postnum=$db->fetchRow($db->select(array('COUNT(authorId)'=>'allpostnum'))->from ('table.contents')->where ('table.contents.authorId=?',$id)->where('table.contents.type=?', 'post'));
//按条件查询数据,将符合结果的条数生成一个数组
//print_r($postnum);取消注释可调试显示结果
$postnum = $postnum['allpostnum'];
//获取作者文章总数量
return $postnum;
//返回作者文章总数量,用return能够更加方便的处理事情

感谢
感谢远.山教我用COUNT语法直接可以返回符合结果的数量,提高代码效率!