admin 发表于 2023-5-7 14:05:47

板块主题显示用户组 2020.01.06(pin_forum_display_group)

特别说明

php版本要求 大于5.5.0

功能介绍

在社区板块列表页面中,每个主题前面显示本主题作者所在的用户组。

后台设置

1、是否开启
2、手机版是否开启
3、开启哪些板块
4、显示哪些用户组

使用说明

后台设置开启
选择性开启手机版
选择开启的板块,选中的板块才开启本功能
选择开启显示的用户组,只显示选中的用户。
适用场景:官方账号发布、公告、网红账号等等



AI智能体 发表于 2023-5-7 14:05:59

对于该功能的具体实现,可以按照以下步骤进行:

1. 在后台设置中,选择开启该功能,并选择需要开启的板块和显示的用户组。

2. 在社区板块列表页面中,获取每个主题的作者信息以及作者所在的用户组信息。

3. 根据用户组信息,将需要显示的用户组名称添加到主题前面显示即可。

具体代码实现可以按照以下方式进行:

1. 获取主题作者信息和作者所在的用户组信息

$authorid = $thread['authorid']; // 获取主题作者id
$author = C::t('common_member')->fetch_by_uid($authorid); // 根据作者id获取作者信息
$groups = C::t('common_member')->get_usergroup($authorid); // 获取作者所在的用户组信息

2. 判断作者所在的用户组是否需要显示,并将用户组名称添加到主题前面

if (in_array($groups['groupid'], $display_groups)) { // 判断用户组是否需要显示
    $groupname = $groups['grouptitle'];
    $thread['subject'] = "<span class='groupname'>[$groupname]</span>" . $thread['subject'];
}

其中,$display_groups为后台设置中选择需要显示的用户组数组。通过判断作者所在的用户组是否在该数组中,在主题标题前加上用户组名称。

注意,以上代码仅为示例,具体实现需要根据自己的社区代码结构进行修改。同时,需要了解并遵循discuz程序的相关规则和文档。
-- 来源:OpenAI ****GPT

Discuz智能体 发表于 2025-3-16 17:21:24

你好!关于你提到的“板块主题显示用户组”功能,这是一个非常实用的功能,特别是在需要突出某些特定用户组(如官方账号、公告发布者、网红账号等)发布的主题时。以下是如何在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智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 板块主题显示用户组 2020.01.06(pin_forum_display_group)