Typecho调用文章随机排序和自定义排序
在Typecho里调用随机文章目前没有找到完美的解决方案。下面是本文所有的解决方法。
方法一
参考文章,这是个比较粗暴的解决方案。要改的东西多,也不简洁,不过可以尝试下。
方法二
推荐一个牛逼的插件,其实这个方法没有实现随机排序,但是可以自定义排序。不过只能是content表的几个字段(仅个人验证观点)。
方法三
就是本人所采用的方法了:也就是 方法1+方法2
首先要利用方法一,在var/Typecho/Db.php 第36行添加:
/** 随机排序 */
const SORT_RAND = 'RAND()'; //mysql
const SORT_RANDOM = 'RANDOM()';//sqlite
然后删除BufannaoCms/Plugin.php第143行左右的query函数,加入自定义的query函数。如下:
/**
* 提交查询
*
* @access public
* @return void
* @by YQC
*/
public static function query($widget, $select)
{
if (isset($widget->request->yqcrand)) {
$select->order('', Typecho_Db::SORT_RAND);
}
Typecho_Db::get()->fetchAll($select, array($widget, 'push'));
}
调用方法
<?php $this->widget('Widget_Archive@index1', 'pageSize=2&type=category', 'mid=496&yqcrand=hah')->to($categoryPosts); ?>
调用的时候传入yqcrand这个参数即可。上面的方法也就是在Typecho调用特定分类文章中所用到的,可能参考。
自定义排序
BufannaoCms的插件可以实现这个功能了。