Discuz!教程之DIY主题模块增加主题随机排序功能

来源:互联网 发布:钢筋店需要什么软件 编辑:程序博客网 时间:2024/05/19 13:44


如图,添加后的效果,Discuz默认规则里面是没有随机排序的,本教程介绍如果添加随机排序:

修改文件 \source\class\block\forum\block_thread.php

1、参考文件有三个修改点,请按照修改点修改。

2、如果您的网站是gbk的,修改前请务必将block_thread.php文件编码格式转成gbk的,否则前台会乱码。

修改点1

找到代码

'orderby' => array('title' => 'threadlist_orderby','type'=> 'mradio','value' => array(array('lastpost', 'threadlist_orderby_lastpost'),array('dateline', 'threadlist_orderby_dateline'),array('replies', 'threadlist_orderby_replies'),array('views', 'threadlist_orderby_views'),array('heats', 'threadlist_orderby_heats'),array('recommends', 'threadlist_orderby_recommends'),),'default' => 'lastpost'),

修改为

'orderby' => array('title' => 'threadlist_orderby','type'=> 'mradio','value' => array(array('lastpost', 'threadlist_orderby_lastpost'),array('dateline', 'threadlist_orderby_dateline'),array('replies', 'threadlist_orderby_replies'),array('views', 'threadlist_orderby_views'),array('heats', 'threadlist_orderby_heats'),array('recommends', 'threadlist_orderby_recommends'),array('rand', '随机排序'),),'default' => 'lastpost'),

修改点2

找到代码

$orderby= isset($parameter['orderby']) ? (in_array($parameter['orderby'],array('lastpost','dateline','replies','views','heats','recommends')) ? $parameter['orderby'] : 'lastpost') : 'lastpost';
修改为

$orderby= isset($parameter['orderby']) ? (in_array($parameter['orderby'],array('lastpost','dateline','replies','views','heats','recommends','rand')) ? $parameter['orderby'] : 'lastpost') : 'lastpost';
修改点3

找到代码

$query = DB::query("SELECT DISTINCT t.*$sqlfieldFROM `".DB::table('forum_thread')."` t$sqlfrom WHERE {$maxwhere}t.readperm='0'$sqlAND t.displayorder>='0'ORDER BY t.$orderby DESCLIMIT $startrow,$items;");
修改为

if($orderby=='rand'){$query = DB::query("SELECT DISTINCT t.*$sqlfieldFROM `".DB::table('forum_thread')."` t$sqlfrom WHERE {$maxwhere}t.readperm='0'$sqlAND t.displayorder>='0'ORDER BY rand()LIMIT $startrow,$items;");}else{$query = DB::query("SELECT DISTINCT t.*$sqlfieldFROM `".DB::table('forum_thread')."` t$sqlfrom WHERE {$maxwhere}t.readperm='0'$sqlAND t.displayorder>='0'ORDER BY t.$orderby DESCLIMIT $startrow,$items;");}

阅读全文
1 0