教程简介
今天欣赏我的网站的时候总感觉侧边栏上缺了一点什么,突然我就灵光一闪,不如加个热门文章排行榜,没事还能关心关心自己的文章到底哪个受欢迎。
空想不做不是我的性格,既然想到了,那我们就要实现,但是我对这个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;?>
大功告成
保存好了之后回到网站看一看,如果有不太满意的地方还可以微调,修改显示文章数量和最低的浏览量可以安装注释来修改。
评论 (0)