给Typeecho主题增加一个热门文章侧边栏

2020-06-02T11:09:00

一直想给我的主题添加一个热门文章侧边栏,但是网上找到的都是一些最新文章和热评文章的教程。所以,功夫不负有心人,还是有按照阅读次数排序的最热文章教程,在这里分享给大家,希望各位用的到!

教程

1.把下面的代码放到主题的 functions.php 中

/*热门文章*/
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;
}

2.在 sidebar.php 合适的位置引用,下面是我自己的样式,仅供参考

<?php $HotPosts = HotPosts();?>
<?php if (count($HotPosts) > 1): ?>
    <div class="widget widget-tops">

  <ul class="widget-nav"><li class="active">热门文章</li></ul>
        <ul class="widget-navcontent">
            <li class="item item-01 active">
                <ul>
<?php foreach ($HotPosts as $v) {?>
<li><a title="<?=$v['title'];?>" href="<?=$v['permalink'];?>">
<?=$v['title'];?>
</a></li>
<?php }?>
                </ul>
            </li>
        </ul>
    </div>
<?php endif; ?>

3.文章显示数量和最低的浏览量可以按照注释自行修改

当前页面是本站的「Baidu MIP」版。下载和发表评论请点击:完整版