T客网提供互联网资讯,建站知识,建站教程以及网站优化相关知识,为站长助力。

首页 > 建站教程 > Discuz > Discuz X3.4 diy主题排序方式增加随机调用帖子

Discuz X3.4 diy主题排序方式增加随机调用帖子

作者:jami688
来源:未知
日期:2019-12-02 13:50:01
本文转载于“建站笔记”,仅做记录


实现效果图:

简单的说,就是每隔一段时间(自己设定的数据缓存时间),即使没有新帖子,这个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';
  2. $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';
  2. $lastposter = !empty($parameter['lastposter']) ? $parameter['lastposter'] : '';
其实就是增加了,'rands'
3.找到
  1. $query = DB::query("SELECT DISTINCT t.*$sqlfield
  2. FROM `".DB::table('forum_thread')."` t
  3. $sqlfrom WHERE {$maxwhere}t.readperm='0'
  4. $sql
  5. AND t.displayorder>='0'
  6. ORDER BY t.$orderby DESC
  7. LIMIT $startrow,$items;"
  8. );
改为:
  1. if($orderby=='rands'){
  2. $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;");
  3. }else{
  4. $query = DB::query("SELECT DISTINCT t.*$sqlfield
  5. FROM `".DB::table('forum_thread')."` t
  6. $sqlfrom WHERE {$maxwhere}t.readperm='0'
  7. $sql
  8. AND t.displayorder>='0'
  9. ORDER BY t.$orderby DESC
  10. LIMIT $startrow,$items;"
  11. );
  12. }


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

新发表