下面是通过改动一些文件来实现随机文章列表的显示,请谨慎操作,如果你的数据较多(文章过万)也不建议采取这个方式。如果对php不熟悉,请在专业人士指导下完成下面的操作。
1.在varTypechoDb.php文件中36行左右添加下列内容,数据库不同添加内容不同。
针对mysql数据库添加
代码: 全选
/** 随机排序 */
const SORT_RAND = 'RAND()';
如果是sqlite数据库则是:
代码: 全选
/** 随机排序 */
const SORT_RAND = 'RANDOM()';
2.新建varWidgetContentsPostRand.php文件内容如下
代码: 全选
<?php
/**
* 随机文章
*
* @category typecho
* @package Widget
* @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org)
* @license GNU General Public License 2.0
* @version $Id$
*/
/**
* 随机文章组件
*
* @category typecho
* @package Widget
* @copyright Copyright (c) 2008 Typecho team (http://www.typecho.org)
* @license GNU General Public License 2.0
*/
class Widget_Contents_Post_Rand extends Widget_Abstract_Contents
{
/**
* 执行函数
*
* @access public
* @return void
*/
public function execute()
{
$this->parameter->setDefault(array('pageSize' => $this->options->postsListSize));
$this->db->fetchAll($this->select()
->where('table.contents.status = ?', 'publish')
->where('table.contents.type = ?', 'post')
->order('', Typecho_Db::SORT_RAND)
->limit($this->parameter->pageSize), array($this, 'push'));
}
}
3.在模板中的sidebar.php文件中合适地方放上如下内容(以default模板为例)
代码: 全选
<div class="widget">
<h3 class="alt"><?php _e('随机文章'); ?></h3 class="alt">
<ul>
<?php $this->widget('Widget_Contents_Post_Rand')
->parse('<li><a href="{permalink}">{title}</a></li>'); ?>
</ul>
</div>
主要是这句:
代码: 全选
<?php $this->widget('Widget_Contents_Post_Rand')
->parse('<li><a href="{permalink}">{title}</a></li>'); ?>
具体效果见http://www.df-blog.cn/左侧边栏