TYPECHO WIKI

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

发布者:Typecho维基君/更新日期:2017-11-08/人气指数:1038

该文主要用到的方法是修改 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
赞助支持

添加新评论 »