Typecho教程 - 给主题增加一个热门文章排行榜

6个月前 ( 03-26 ) 1702阅读 0评论

Typecho教程 - 给主题增加一个热门文章排行榜

灵感起源

今天欣赏我的网站的时候总感觉侧边栏上缺了一点什么,以前的那个flash的仓鼠也不想养了,毕竟在emlog上养了三年。突然我就灵光一闪,不如加个热门文章排行榜,没事还能关心关心自己的文章到底哪个受欢迎。

说干就干

空想不做不是我的性格,既然想到了,那我们就要实现,但是我对这个typecho的api实在是不了解,所以说在查了大量资料和文章之后,终于写出来了。我就直接贴我写好的代码了啊,也不讲过程,因为过程不重要,结果才是最重要的。

/*热门文章*/
function HotPosts() {
$archive = Typecho_Widget::widget('Widget_Archive');
$hotNums = 5; //热门文章数
$minViews = 10; //最低阅读量
$db = Typecho_Db::get();
$select = $db->select()->from('table.contents')
->where('table.contents.type = ?', 'post')
->where('table.contents.status = ?', 'publish')
->limit($hotNums);
$select->order("table.contents.views", Typecho_Db::SORT_DESC);
if ($minViews > 0) {
$select->where('table.contents.views >= ?', $minViews);
}
$rows = $db->fetchAll($select);
foreach ($rows as $row) {
$HostPostList[] = $archive->filter($row);
}
return $HostPostList;
}

把这个代码放到主题目录下的functions.php就行了,主题和主题应该不一样吧,没有functions.php的话就放到sidebar.php要是连sidebar.php都没有,那么我建议使用Cuckoo主题。
然后我们放好函数之后,就可以把它加到侧边栏了,我们在sidebar.php合适的位置加入以下代码,你们别照扒,安装自己主题的样式来。

<?php $HotPosts = HotPosts();?>
<?php if (!$this->is('single') && count($HotPosts) > 1): ?>
<div class="mdui-card sidebar-info mdui-shadow-10">
<ul class="mdui-list">
<div class="sidebar-reply-title">热门文章</div>
<li class="mdui-divider mdui-m-y-0"></li>
<?php foreach ($HotPosts as $v) {?>
<a title="<?=$v['title'];?>" href="<?=$v['permalink'];?>">
<li class="mdui-list-item mdui-ripple sidebar-reply-list"><div class="sidebar-reply-text"><?=$v['title'];?></div></li>
<li class="mdui-divider"></li>
</a>
<?php }?>
</ul>
</div>
<?php endif;?>

因为我的文章页面已经有猜你喜欢这个栏目了,所以说在文章界面是不显示热门文章这个栏目的。如果想让他在任何界面都显示,可以写成下面这样

<?php $HotPosts = HotPosts();?>
<?php if (count($HotPosts) > 1): ?>
<div class="mdui-card sidebar-info mdui-shadow-10">
<ul class="mdui-list">
<div class="sidebar-reply-title">热门文章</div>
<li class="mdui-divider mdui-m-y-0"></li>
<?php foreach ($HotPosts as $v) {?>
<a title="<?=$v['title'];?>" href="<?=$v['permalink'];?>">
<li class="mdui-list-item mdui-ripple sidebar-reply-list"><div class="sidebar-reply-text"><?=$v['title'];?></div></li>
<li class="mdui-divider"></li>
</a>
<?php }?>
</ul>
</div>
<?php endif;?>

大功告成

保存好了之后回到网站看一看,如果有不太满意的地方还可以微调,修改显示文章数量和最低的浏览量可以安装注释来修改。


文章版权声明:除非注明,否则均为凭栏听雨原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (暂无评论,1702人围观)

还没有评论,来说两句吧...

取消
支付宝二维码
支付宝二维码
微信二维码