前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Typecho教程 - 给主题增加一个热门文章排行榜

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

作者头像
MoLeft
发布2022-08-30 11:21:49
4150
发布2022-08-30 11:21:49
举报
文章被收录于专栏:用砖头敲代码

灵感起源

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

说干就干

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

代码语言:javascript
复制
/*热门文章*/
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合适的位置加入以下代码,你们别照扒,安装自己主题的样式来。

代码语言:javascript
复制
<?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;?>

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

代码语言:javascript
复制
<?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;?>

大功告成

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

如无特殊说明《Typecho教程 - 给主题增加一个热门文章排行榜》为博主MoLeft原创,转载请注明原文链接为:https://moleft.cn/post-62.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 灵感起源
  • 说干就干
  • 大功告成
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档