去评论
dz插件网

Discuz DIY 加入随机调用修改方法!

admin
2021/03/10 08:36:54
简单的说,就是每隔一段时间(自己设定的数据缓存时间),即使没有新帖子,这个diy模块所调用的帖子也会变。


具体操作:

1.打开/source/class/block/forum/block_threadhot.php,找到
  1. array('recommends', 'threadlist_orderby_recommends'),

之下增加
  1. array('rands', '随机'),

2.打开/source/class/block/forum/block_thread.php,找到
  1. $orderby = isset($parameter['orderby']) ? (in_array($parameter['orderby'],array('lastpost','dateline','replies','views','heats','recommends')) ? $parameter['orderby'] : 'lastpost') : 'lastpost';$lastposter = !empty($parameter['lastposter']) ? $parameter['lastposter'] : '';

改为
  1. $orderby = isset($parameter['orderby']) ? (in_array($parameter['orderby'],array('lastpost','dateline','replies','views','heats','recommends','rands')) ? $parameter['orderby'] : 'lastpost') : 'lastpost';$lastposter = !empty($parameter['lastposter']) ? $parameter['lastposter'] : '';

3.找到
  1. $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. if($orderby=='rands'){$query = DB::query("SELECT DISTINCT t.* $sqlfield FROM `".DB::table('forum_thread')."` t $sqlfrom WHERE {$maxwhere}t.readperm='0' $sql AND 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;");}

就是在数据查询的外层加上了判断,如果是随机排序,查询里排序条件就用ORDER BY rand(),否则按原本的排序条件。