Discuz DIY 加入随机调用修改方法!
简单的说,就是每隔一段时间(自己设定的数据缓存时间),即使没有新帖子,这个diy模块所调用的帖子也会变。<br /><img title="02.JPG" id="aimg_10356" aid="10356" src1="static/image/common/none.gif" zoom="https://www.dismall.com/data/attachment/forum/202103/09/210526xcj42duxn7ct8csj.jpg" src="https://www.dismall.com/data/attachment/forum/202103/09/210526xcj42duxn7ct8csj.jpg" class="zoom" onclick="zoom(this, this.src, 0, 0, 0)" width="600" inpost="1" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})" /><br /><br />具体操作:<br /><br />1.打开/source/class/block/forum/block_threadhot.php,找到<br /><ol><li>array('recommends', 'threadlist_orderby_recommends'),</ol><br /><br />之下增加<br /><br /><ol><li>array('rands', '随机'),</ol><br /><br />2.打开/source/class/block/forum/block_thread.php,找到<br /><br /><ol><li>$orderby = isset($parameter['orderby']) ? (in_array($parameter['orderby'],array('lastpost','dateline','replies','views','heats','recommends')) ? $parameter['orderby'] : 'lastpost') : 'lastpost';<br /><li>$lastposter = !empty($parameter['lastposter']) ? $parameter['lastposter'] : '';</ol><br /><br />改为<br /><br /><ol><li>$orderby = isset($parameter['orderby']) ? (in_array($parameter['orderby'],array('lastpost','dateline','replies','views','heats','recommends','rands')) ? $parameter['orderby'] : 'lastpost') : 'lastpost';<br /><li>$lastposter = !empty($parameter['lastposter']) ? $parameter['lastposter'] : '';</ol><br /><br />3.找到<br /><br /><ol><li>$query = DB::query("SELECT DISTINCT t.*$sqlfield<br /><li>FROM `".DB::table('forum_thread')."` t<br /><li>$sqlfrom WHERE {$maxwhere}t.readperm='0'<br /><li>$sql<br /><li>AND t.displayorder>='0'<br /><li>ORDER BY t.$orderby DESC<br /><li>LIMIT $startrow,$items;"<br /><li>);</ol><br /><br />改为<br /><br /><ol><li>if($orderby=='rands'){<br /><li>$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;");<br /><li>}else{<br /><li>$query = DB::query("SELECT DISTINCT t.*$sqlfield<br /><li>FROM `".DB::table('forum_thread')."` t<br /><li>$sqlfrom WHERE {$maxwhere}t.readperm='0'<br /><li>$sql<br /><li>AND t.displayorder>='0'<br /><li>ORDER BY t.$orderby DESC<br /><li>LIMIT $startrow,$items;"<br /><li>);<br /><li>}</ol><br /><br />就是在数据查询的外层加上了判断,如果是随机排序,查询里排序条件就用ORDER BY rand(),否则按原本的排序条件。排序<em>, </em>帖子<em>, </em>block<em>, </em>随机<em>, </em>条件 如果您的网站是gbk的,修改前请务必将block_thread.php文件编码格式转成gbk的,否则前台会乱码。 <br /><br />block_thread.php文件内容没有中文字,不用转码。<br /><br />block_threadhot.php,网站是gbk的,才要将编码格式转成gbk的。<br /> <br />对的,你这个教程只改了 block_threadhot.php(热门帖)中的 orderby,DIY不选热门帖不就不起作用了么?<br /><strong>一点补充:</strong>一般DIY最后都有改动就变成了“高级自定义”使用的:block_thread.php,所以orderby的修改应该在这个文件里面。 <br />热门DIY空白帖子看得太多,才有这个帖子。<br /><br />你是开发者,懂得妙用"高級自定义",但一般用户不会。 <br />如果是群组呢 <br />论坛 DIY修改后,在群组使用热帖DIY一样有"随机"二字。 谢谢分享,受益了。
頁:
[1]