Typecho Wiki
每一个作品都值得被记录

如何为 Typecho 网站实现随机文章列表?

Typecho维基君Typecho教程 • 2440次浏览 • 发布 2017-11-08 • 更新 2017-11-08
极致加速的V2Ray 助您畅享全球网络 & 搬瓦工VPS最新优惠码
🛜自用大流量超低月租手机卡推荐榜单 #拒绝流量焦虑

该文主要用到的方法是修改 TYPECHO 源码,达到实现随机文章列表的功能,并且通过可以实现某个具体分类下的随机文章调用,但不建议使用该方法,因为一旦系统升级,可能就会收到影响,建议大家参考另外一篇文章,实现网站随机文章调用 : 如何通过修改 TYPECHO 主题文件来实现网站随机文章列表功能? ,另外还有一个方法就是直接使用插件实现,可以参考:Typecho 随机文章列表插件RandomArticleList 。

在var/Widget/Contents/Post目录新建Rand.php文件,内容如下:

<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;

class Widget_Contents_Post_Rand extends Widget_Abstract_Contents
{
    /**
     * 执行函数
     *
     * @access public
     * @return void
     */
    public function execute()
    {
        $this->parameter->setDefault(array('pageSize' => $this->options->postsListSize));

        $select = $this->select();
        if(isset($this->request->mid)){
            $select->join('table.relationships', 'table.contents.cid = table.relationships.cid')
                ->where('table.relationships.mid = ?', $this->request->mid);
        }
        $select->where('table.contents.status = ?', 'publish')
            ->where('table.contents.created < ?', $this->options->gmtTime)
            ->where('table.contents.type = ?', 'post')
            ->order('', 'RAND()')
            ->limit($this->parameter->pageSize);

        $this->db->fetchAll($select, array($this, 'push'));
    }
}

使用方法

 <div>
        <ul>
           <?php $this->widget('Widget_Contents_Post_Rand','pageSize=5')
                    ->parse('<li><a href="{permalink}">{title}</a></li>'); ?>
        </ul>
 </div>

显示某个分类下的随机文章

   <div>
        <ul>
           <?php $this->widget('Widget_Contents_Post_Rand','pageSize=5','mid=3')
                   ->parse('<li><a href="{permalink}">{title}</a></li>'); ?>
        </ul>
    </div>

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,Typecho.Wiki所有文章均包含本声明。
本文检索关键词:typecho
厂商投放

【腾讯云】🎉五一云上盛惠!云服务器99元/月续费同价!

腾讯云五一劳动节海量产品 · 轻松上云!云服务器首年1.8折起,买1年送3个月!超值优惠,性能稳定,让您的云端之旅更加畅享。快来腾讯云选购吧!

广告
添加新评论 »