Discuz DIY 加入随机调用修改方法!
简单的说,就是每隔一段时间(自己设定的数据缓存时间),即使没有新帖子,这个diy模块所调用的帖子也会变。具体操作:
1.打开/source/class/block/forum/block_threadhot.php,找到
array('recommends', 'threadlist_orderby_recommends'),
之下增加
array('rands', '随机'),
2.打开/source/class/block/forum/block_thread.php,找到
$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'] : '';
改为
$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.找到
$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=='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(),否则按原本的排序条件。 如果您的网站是gbk的,修改前请务必将block_thread.php文件编码格式转成gbk的,否则前台会乱码。 block_thread.php文件内容没有中文字,不用转码。
block_threadhot.php,网站是gbk的,才要将编码格式转成gbk的。 对的,你这个教程只改了 block_threadhot.php(热门帖)中的 orderby,DIY不选热门帖不就不起作用了么?
一点补充:一般DIY最后都有改动就变成了“高级自定义”使用的:block_thread.php,所以orderby的修改应该在这个文件里面。
页:
[1]