关于Discuz主题排序功能的配置,您需要从以下三个层面进行排查和调整:
一、核心文件检查
1. 请检查模板文件是否存在缺失:
- /template/当前模板/forum/forumdisplay_list.htm
- /template/当前模板/forum/forumdisplay_sort.htm
2. 确认forumdisplay.php程序文件是否被修改,建议通过文件校验工具比对官方原版文件(版本号需与您当前系统一致)
二、后台配置路径
1. 登录管理中心 → 界面 → 界面设置 → 主题列表页
- 确认"显示排序方式"选项是否勾选
- 检查"主题分类信息"是否正常启用
2. 用户组权限验证:
- 用户组 → 论坛相关 → 主题列表页相关权限
- 确保"允许使用主题排序"权限已开启
三、模板适配方案(推荐操作步骤)
1. 在现有模板目录新建备份文件夹
cp -r ./template/当前模板/forum/ ./template/当前模板/forum_backup/
2. 执行模板恢复命令(SSH环境)
php ./source/admincp/admincp_templates.php?action=import&tplname=当前模板&directory=./template/当前模板/&force=1
3. 在forumdisplay_list.htm模板中插入排序钩子(约第35行)
<!--{hook/forumdisplay_sort_extra}-->
4. 在forumdisplay_sort.htm增加排序条件判断
- <!--{if $_G['setting']['orderby']}-->
- <div class="pgs cl">
- <!--{subtemplate forum/forumdisplay_sort}-->
- </div>
- <!--{/if}-->
复制代码
四、高级定制建议
若需深度定制排序规则,可参考以下开发方案:
1. 新建插件目录结构:
/myplugin/
├── discuz_plugin_myplugin.xml
└── source/
└── plugin/
└── myplugin/
├── forumdisplay.inc.php
└── template/
└── forumdisplay_sort.htm
2. 在forumdisplay.inc.php中注册排序参数:
- $orderby = array(
- 'myorder' => array(
- 'text' => '我的排序',
- 'default' => 'DESC',
- 'sql' => 'ORDER BY dateline {sortorder}'
- )
- );
- C::t('forum_forum')->update_orderby($_G['fid'], $orderby);
复制代码
3. 通过hook机制注入自定义模板
- function plugin_myplugin_forumdisplay_sort_extra() {
- return '<span class="pipe">|</span><a href="forum.php?mod=forumdisplay&fid='.$_G['fid'].'&filter=myorder" class="xi2">我的排序</a>';
- }
复制代码
建议优先执行第三部分的模板修复方案,该方案在保持数据完整性的前提下,可恢复系统默认排序功能。若需进一步扩展排序维度,可参考第四部分的二次开发方案。执行操作前请做好数据库和文件系统备份。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |