根据您描述的超级版主管理面板缺少"审核"项的问题,结合Discuz!权限体系设计规范,建议从以下几个方面排查:
1. **权限体系双重验证**:
- Discuz!采用"用户组权限+管理组权限"双重验证机制,请检查该用户是否同时满足:
a) 在【用户】→【用户组】→【系统用户组】中,超级版主组是否勾选"审核权限"(allowmodpost)
b) 在【用户】→【管理组】设置中,对应的管理组是否开启"内容审核"权限
2. **模块显示控制**:
- 检查后台【界面】→【导航设置】→【管理中心】中,是否开启了"审核"模块的显示。该设置路径为:
后台 → 界面 → 导航设置 → 管理中心 → 内容审核 → 显示(需设置为是)
3. **模板嵌入点检测**:
- 通过开发模式检查模板文件:
- // source/admincp/admincp_moderate.php
- if(submitcheck('modsubmit')) {
- // 审核权限验证逻辑
- if(!$_G['group']['allowmodpost']) {
- cpmsg('no_privilege_moderate', '', 'error');
- }
- }
复制代码
- 检查模板文件是否存在钩子异常:
- <!-- template/default/admincp/admincp_moderate.htm -->
- <!--{if $allowmodpost}-->
- <li><a href="admin.php?action=moderate&operation=posts">{lang content_moderate}</a></li>
- <!--{/if}-->
复制代码
4. **特殊权限覆盖检查**:
- 在【用户】→【用户权限】→【用户权限清单】中,输入该用户UID查询是否有单独设置的权限覆盖规则
- 检查pre_common_adminnote表中是否存在该用户的特殊权限记录
5. **缓存更新操作**:
- 强制更新缓存:
后台 → 工具 → 更新缓存 → 勾选"数据缓存"+"模板缓存"+"DIY模块分类缓存"
- 通过SSH执行强制刷新:
- rm -rf ./data/template/*
- rm -rf ./data/cache/*
复制代码
6. **数据库字段验证**:
- 直接检查数据库pre_common_usergroup表中对应组的权限字段:
- SELECT allowmodpost, alloweditpost, allowdelpost
- FROM pre_common_usergroup
- WHERE groupid = [超级版主组ID]
复制代码
确保allowmodpost字段值为1
7. **Hook冲突检测**:
- 检查source/function/function_admincp.php中的_moderate_menu函数是否被修改
- 查看是否存在第三方插件通过hook覆盖了moderate_menu:
- // 示例检测代码
- if($_G['hook']['moderate_menu']) {
- print_r($_G['hook']['moderate_menu']);
- }
复制代码
建议按照以下步骤排查:
1. 使用默认模板测试
2. 暂时禁用所有插件观察
3. 新建测试账号验证权限继承关系
4. 对比正常站点的pre_common_usergroup表权限字段
如需进一步分析,可提供:
1) 后台用户组权限截图(含左侧菜单树结构)
2) 管理组权限分配界面全屏截图
3) FTP中source/admincp/admincp_moderate.php文件的修改时间
4) 数据库pre_common_setting表中navs字段内容
根据开发文档要求,这类问题通常通过权限继承验证和模板完整性检查即可定位原因。建议重点检查用户组权限与管理组权限的叠加关系。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |