返回列表 发帖
查看: 42|回复: 8

dz x5为DIY模块增加随机排序选项,别让帖子沉下去

TaC

3

主题

509

回帖

1

粉丝

自成一派

贡献
7 点
金币
2 个
发表于 昨天 21:04 |浙江| 查看全部 |阅读模式
下面是留底保存的帖子记录,原来的思路,也是可见的效果。刚看到有网友说关于DIY模板更新内容的问题,个人感觉,有必要分享一下这个解决随机排序的问题。这是Trae解决的,我可没这个脑子。下面直接复制原文:
首先,当然是在DIY时,添加一条随机的选项。【略】
再到语言文件设置语言,中文显示嘛,不然是字母了。文件路径:source\i18n\SC_UTF8\block\lang_threadlist.php,约80行添加:'threadlist_orderby_random' => '按随机顺序排序',
再修改和修复:source\function\function_block.php
1, 修复代码结构问题在 block_get_batch 函数中,修复了代码重复和嵌套错误,将重复的 block_no_cache 检查合并为单一条件判断:
javascript
2. 分离随机排序模块和普通模块处理在 block_get_batch 函数中,实现了随机排序模块和普通模块的分离处理逻辑:
javascript
3. 强制刷新随机排序内容在 block_fetch_content 函数中,检测模块是否使用随机排序,并设置强制刷新标志:
javascript
修复原理
1. 识别随机排序模块 :通过检测模块参数中是否包含 "orderby":"random" 来判断是否为随机排序模块
2. 绕过缓存 :对随机排序模块设置 forceupdate = true ,确保每次都重新生成内容
3. 分离处理 :在批量获取模块时,将随机排序模块和普通模块分开处理,避免随机模块被缓存4. 优化代码结构 :清理重复的缓存控制代码,使逻辑更加清晰
主要修改的文件有:
1,source\i18n\SC_UTF8\block\lang_threadlist.php  //添加自定义语言
2,source\function\function_block.php  //效果实现
3,source\class\block\forum\block_thread.php  //diy窗口里的随机选项
回复

使用道具 举报

TaC

3

主题

509

回帖

1

粉丝

自成一派

贡献
7 点
金币
2 个
 楼主| 发表于 昨天 21:10 |浙江| 查看全部
  一楼主要是为PC端设置随机排序,使用dz程序的都知道,PC端论坛与群组,在模块上不是统一的,所以,设置好PC端后,群组方向,是跟随不了这种功能的。
另外,手机的主题列表页,或首页,也同步不了这些功能,所以,还需另外设置和修改。
实现随机排序功能过程中涉及的文件和路径如下:
1. 群组模块简体中文语言文件 
 - 路径:source\i18n\SC_UTF8\block\lang_groupthread.php   
- 修改:添加 'groupthread_orderby_random' => '随机排序' 语言定义
2. 群组模块核心文件(已包含随机排序功能)   - 路径:source\class\block\group\block_groupthread.php   
- 实现功能:   
  - 添加了'random'排序选项及对应语言键     
- SQL查询中实现了ORDER BY RAND()随机排序逻辑     
- 禁用了随机排序时的缓存
3. 手机端主题列表模板   - 路径: 手机模板或默认手机模板\touch\forum\forumdisplay.php   - 修改:在导航栏中添加了随机排序选项(约37行)
javascript
  4. PC端主题列表模板(已包含随机排序功能,即一楼内容)   
- 路径:目前模板\forum\forumdisplay_list.php   
- 已有的功能:排序下拉菜单(filter_kmpx_menu和filter_orderby_menu)中已包含"随机排序"选项,对应链接为"?random=1"参数
5. 简体中文语言文件(已包含随机排序语言定义,一楼内容)   
- 路径: source\i18n\SC_UTF8\block\lang_groupthread.php   
- 已定义: 'groupthread_orderby_random' => '随机排序'
6. 手机端排序逻辑   
- 主要通过URL参数 ?random=1 触发随机排序功能,与现有排序逻辑集成
通过以上修改和检查,我们已经完成了群组模块和手机端主题列表的随机排序功能支持。用户可以在群组DIY模块中选择随机排序选项,在手机端和PC端的主题列表页通过新增的随机排序选项按钮实现随机排序功能。
所以,除了一楼修改的PC端(此楼4~5项),在群组和手机端方面修改了三个文件,即上面的1~3项。
至此,完成全局随机排序功能。你可以在适当的位置,或模块中选择随机。
回复

使用道具 举报

TaC

3

主题

509

回帖

1

粉丝

自成一派

贡献
7 点
金币
2 个
 楼主| 发表于 昨天 21:12 |浙江| 查看全部
本帖最后由 TaC 于 2026-4-16 21:17 编辑

这个编辑框是真的不好用,复制个内容过来,我得重新编辑排版。不然,段落,文字全集一起了。
说明一下,上面的修改是在X5开发版时,修改的,不知道现在正式版本是否可行,仅作为参考。
回复

使用道具 举报

96

主题

613

回帖

20

粉丝

管理员

贡献
28 点
金币
70 个
产品版本
X5.0+
发表于 昨天 21:16 |北京| 查看全部
X5 开始插件都入住DIY了,你这么修改不如自己开发个插件更贴近用户
回复

使用道具 举报

TaC

3

主题

509

回帖

1

粉丝

自成一派

贡献
7 点
金币
2 个
 楼主| 发表于 昨天 21:20 |浙江| 查看全部
monkeye 发表于 2026-4-16 21:16
X5 开始插件都入住DIY了,你这么修改不如自己开发个插件更贴近用户

你高看我了,我可不懂做插件,这是Trae弄的,不过还是有效果的。搞了好多次呀,也是反反复复的,每次弄的都不一样。保留的记录就只有目前这一个了,有些丢失了。
回复

使用道具 举报

58

主题

197

回帖

3

粉丝

炉火纯青

贡献
0 点
金币
0 个
发表于 昨天 21:23 |四川| 查看全部
monkeye 发表于 2026-4-16 21:16
X5 开始插件都入住DIY了,你这么修改不如自己开发个插件更贴近用户

麻烦你老师傅,帮忙看我这个帖子,这事估计只有你能解释的清楚。https://www.dismall.com/thread-28529-1-1.html
回复

使用道具 举报

58

主题

197

回帖

3

粉丝

炉火纯青

贡献
0 点
金币
0 个
发表于 昨天 21:24 |四川| 查看全部
楼主你发的这个,是DIY随机刷新帖子,跟我的需求不一样。我的需求是,刷新尽可能及时,并且网站不能卡顿。
回复

使用道具 举报

58

主题

197

回帖

3

粉丝

炉火纯青

贡献
0 点
金币
0 个
发表于 昨天 21:27 |四川| 查看全部
这个Discuz X5的编辑器,确实非常难用。
回复

使用道具 举报

TaC

3

主题

509

回帖

1

粉丝

自成一派

贡献
7 点
金币
2 个
 楼主| 发表于 昨天 21:36 |浙江| 查看全部
lanxiaoxiao 发表于 2026-4-16 21:23
麻烦你老师傅,帮忙看我这个帖子,这事估计只有你能解释的清楚。https://www.dismall.com/thread-28529-1 ...

我就是看了你的帖子,才分享这个。
及时更新(我也没找到更好的办法),与刷新更新,是一样的,就是让你网站的浏览者能查看到不同的内容,不然几天,都是一样的内容,谁都会厌的。
现在,大多网站都不是景气,这是事实,没人气,没流量,那怎么让人不同时间,看到不同内容,随机只是解决部分内容。如果内容更新快,可以选择默认的选择条件,如果更新的少,来一个随机,是一个不错的选择
回复

使用道具 举报

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

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2026-4-17 01:17 , Processed in 0.053846 second(s), 9 queries , Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2026 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表