Discuz!应用商城(DisMall)Discuz!应用商城(DisMall)

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1262|回复: 7

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

[复制链接]

81

主题

2858

帖子

3395

积分

Forum Legend

Rank: 6Rank: 6Rank: 6

贡献
8 点
金币
273 个
发表于 2021-3-10 06:12:03 | 显示全部楼层 |阅读模式
简单的说,就是每隔一段时间(自己设定的数据缓存时间),即使没有新帖子,这个diy模块所调用的帖子也会变。
02.JPG

具体操作:

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'] : '';
复制代码


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(),否则按原本的排序条件。
回复

使用道具 举报

17

主题

164

帖子

372

积分

开发者

Rank: 6Rank: 6Rank: 6

贡献
2 点
金币
145 个
发表于 2021-3-10 07:44:42 | 显示全部楼层
如果您的网站是gbk的,修改前请务必将block_thread.php文件编码格式转成gbk的,否则前台会乱码。
回复 支持 反对

使用道具 举报

81

主题

2858

帖子

3395

积分

Forum Legend

Rank: 6Rank: 6Rank: 6

贡献
8 点
金币
273 个
 楼主| 发表于 2021-3-10 07:55:24 | 显示全部楼层
本帖最后由 allthebest 于 2021-3-9 23:08 编辑
人工智能实验室 发表于 2021-3-9 22:44
如果您的网站是gbk的,修改前请务必将block_thread.php文件编码格式转成gbk的,否则前台会乱码。 ...

block_thread.php文件内容没有中文字,不用转码。

block_threadhot.php,网站是gbk的,才要将编码格式转成gbk的。
回复 支持 反对

使用道具 举报

17

主题

164

帖子

372

积分

开发者

Rank: 6Rank: 6Rank: 6

贡献
2 点
金币
145 个
发表于 2021-3-10 08:48:43 | 显示全部楼层
allthebest 发表于 2021-3-10 07:55
block_thread.php文件内容没有中文字,不用转码。

block_threadhot.php,网站是gbk的,才要将编码格式转 ...

对的,你这个教程只改了 block_threadhot.php(热门帖)中的 orderby,DIY不选热门帖不就不起作用了么?
一点补充:一般DIY最后都有改动就变成了“高级自定义”使用的:block_thread.php,所以orderby的修改应该在这个文件里面。
回复 支持 反对

使用道具 举报

81

主题

2858

帖子

3395

积分

Forum Legend

Rank: 6Rank: 6Rank: 6

贡献
8 点
金币
273 个
 楼主| 发表于 2021-3-10 19:03:10 | 显示全部楼层
人工智能实验室 发表于 2021-3-9 23:48
对的,你这个教程只改了 block_threadhot.php(热门帖)中的 orderby,DIY不选热门帖不就不起作用了么?
...

热门DIY空白帖子看得太多,才有这个帖子。

你是开发者,懂得妙用"高級自定义",但一般用户不会。
回复 支持 反对

使用道具 举报

2

主题

21

帖子

27

积分

Newbie

Rank: 1

贡献
0 点
金币
4 个
发表于 2021-3-11 13:34:56 | 显示全部楼层
allthebest 发表于 2021-3-10 19:03
热门DIY空白帖子看得太多,才有这个帖子。

你是开发者,懂得妙用"高級自定义",但一般用户不会。 ...

如果是群组呢
回复 支持 反对

使用道具 举报

81

主题

2858

帖子

3395

积分

Forum Legend

Rank: 6Rank: 6Rank: 6

贡献
8 点
金币
273 个
 楼主| 发表于 2021-3-11 21:07:50 | 显示全部楼层

论坛 DIY修改后,在群组使用热帖DIY一样有"随机"二字。
回复 支持 反对

使用道具 举报

1

主题

22

帖子

196

积分

Member

Rank: 2Rank: 2

贡献
0 点
金币
129 个
发表于 2021-3-13 10:57:05 | 显示全部楼层
谢谢分享,受益了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz!应用中心 ( 皖ICP备16010102号 )|网站地图star

GMT+8, 2022-5-27 04:40 , Processed in 0.036314 second(s), 11 queries , Yac On.

Powered by Discuz!

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表