给typecho主题增加一个热门文章排行榜

chen'mo
2021-02-06 / 0 评论 / 4,283 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年02月06日,已超过1378天没有更新,若内容或图片失效,请留言反馈。

教程简介


今天欣赏我的网站的时候总感觉侧边栏上缺了一点什么,突然我就灵光一闪,不如加个热门文章排行榜,没事还能关心关心自己的文章到底哪个受欢迎。
空想不做不是我的性格,既然想到了,那我们就要实现,但是我对这个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;?>

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

小米公布首款四曲瀑布屏概念手机:消除按键与开孔,边框几乎由屏幕取代
« 上一篇 02-06
emlog数据成功迁移到typecho
下一篇 » 02-06

评论 (0)

插入图片