你好!关于你提到的“板块主题显示用户组”功能,这是一个非常实用的功能,特别是在需要突出某些特定用户组(如官方账号、公告发布者、网红账号等)发布的主题时。以下是如何在Discuz!中实现这一功能的详细步骤和代码示例。
### 1. 功能实现思路
- **获取主题作者的用户组信息**:在板块列表页面中,获取每个主题的作者ID,然后根据作者ID查询其所在的用户组。
- **显示用户组信息**:在主题标题前面显示该用户组的名称或图标。
- **后台控制**:通过后台设置来控制是否开启该功能、是否在手机版显示、选择开启的板块以及显示哪些用户组。
### 2. 代码实现
#### 2.1 修改模板文件
首先,你需要修改板块列表页面的模板文件,通常为 `template/default/forum/forumdisplay_list.htm`。
- <!-- 在主题标题前面添加用户组信息 -->
- <!--{if $thread['authorid']}-->
- <!--{eval $group = C::t('common_member')->fetch($thread['authorid']);}-->
- <!--{if in_array($group['groupid'], $show_groups)}-->
- <span class="user-group">[{$group['grouptitle']}]</span>
- <!--{/if}-->
- <!--{/if}-->
- {$thread['subject']}
复制代码
#### 2.2 修改PHP文件
在 `source/module/forum/forumdisplay.php` 文件中,添加获取用户组信息的逻辑。
- // 获取后台设置的用户组
- $show_groups = C::t('common_setting')->fetch('pin_forum_display_group', true);
- // 在获取主题列表时,将用户组信息传递给模板
- foreach($threadlist as &$thread) {
- $thread['author_group'] = C::t('common_member')->fetch($thread['authorid']);
- }
复制代码
#### 2.3 后台设置
在后台添加设置选项,通常需要修改 `source/admincp/admincp_setting.php` 文件。
- // 添加设置项
- if($operation == 'pin_forum_display_group') {
- if(!submitcheck('settingsubmit')) {
- showformheader('pin_forum_display_group');
- showtableheader('板块主题显示用户组设置');
- showsetting('是否开启', 'pin_forum_display_group_enable', $settings['pin_forum_display_group_enable'], 'radio');
- showsetting('手机版是否开启', 'pin_forum_display_group_mobile', $settings['pin_forum_display_group_mobile'], 'radio');
- showsetting('开启哪些板块', 'pin_forum_display_group_forums', $settings['pin_forum_display_group_forums'], 'mcheckbox');
- showsetting('显示哪些用户组', 'pin_forum_display_group_groups', $settings['pin_forum_display_group_groups'], 'mcheckbox');
- showtablefooter();
- showformfooter();
- } else {
- C::t('common_setting')->update('pin_forum_display_group_enable', $_GET['pin_forum_display_group_enable']);
- C::t('common_setting')->update('pin_forum_display_group_mobile', $_GET['pin_forum_display_group_mobile']);
- C::t('common_setting')->update('pin_forum_display_group_forums', $_GET['pin_forum_display_group_forums']);
- C::t('common_setting')->update('pin_forum_display_group_groups', $_GET['pin_forum_display_group_groups']);
- cpmsg('setting_update_succeed', 'action=setting&operation=pin_forum_display_group', 'succeed');
- }
- }
复制代码
### 3. 使用说明
- **后台设置开启**:在后台找到“板块主题显示用户组”设置项,开启该功能。
- **选择性开启手机版**:根据需求选择是否在手机版显示用户组信息。
- **选择开启的板块**:选择需要开启该功能的板块,只有选中的板块才会显示用户组信息。
- **选择显示的用户组**:选择需要显示的用户组,只有选中的用户组才会在主题前面显示。
### 4. 适用场景
- **官方账号发布**:可以突出显示官方账号发布的主题,增加权威性。
- **公告**:公告类主题可以显示特定的用户组,提醒用户注意。
- **网红账号**:网红账号发布的主题可以显示其用户组,增加辨识度。
### 5. 注意事项
- **PHP版本要求**:确保你的服务器PHP版本大于5.5.0。
- **兼容性**:在修改模板和PHP文件时,注意不要破坏原有的功能,确保兼容性。
希望这些信息对你有所帮助!如果你有其他问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |