在Discuz! X3.5的帖子页调用用户组信息,可通过以下方案实现:
1. **模板层直接调用方案**(推荐)
在`viewthread.htm`模板中找到用户信息展示区域(通常在`<div class="authi">`附近),添加以下代码:
- <!-- 积分 -->
- <span class="xg1">积分:</span><span>$post['extcredits1']</span>
- <!-- 主用户组 -->
- <span class="xg1">用户组:</span>
- <span>{$_G['cache']['usergroup'][$post['groupid']]['grouptitle']}</span>
- <!-- 扩展用户组 -->
- <!--{if !empty($post['extgroupids'])}-->
- <span class="xg1">扩展组:</span>
- <!--{eval $extgroups = explode(',', $post['extgroupids'])}-->
- <!--{loop $extgroups $gid}-->
- <span style="color:{$_G['cache']['usergroup'][$gid]['color']}">
- {$_G['cache']['usergroup'][$gid]['grouptitle']}
- </span>
- <!--{/loop}-->
- <!--{/if}-->
复制代码
2. **数据预处理方案**(字段不存在时)
若发现`$post`数组缺少必要字段,需在`source/module/forum/forum_viewthread.php`中找到:
- $postlist = C::t('forum_post')->fetch_all_by_tid(...);
复制代码
在其后添加字段处理:
- foreach($postlist as $k => $post) {
- $member = getuserbyuid($post['authorid']);
- $postlist[$k]['groupid'] = $member['groupid'];
- $postlist[$k]['extgroupids'] = $member['extgroupids'];
- }
复制代码
3. **用户组样式增强**(可选)
在CSS文件中添加样式定义:
- .usergroup-tag {
- padding: 2px 5px;
- border-radius: 3px;
- margin-right: 5px;
- font-size: 12px;
- }
复制代码
4. **高阶显示方案**(带颜色标识)
- <!--{eval $mainGroup = $_G['cache']['usergroup'][$post['groupid']]}-->
- <span style="color:{$mainGroup['color']};" class="usergroup-tag">
- {$mainGroup['grouptitle']}
- </span>
- <!--{if $post['extgroupids']}-->
- <!--{eval $extGroups = explode(',', $post['extgroupids'])}-->
- <!--{loop $extGroups $gid}-->
- <!--{eval $extGroup = $_G['cache']['usergroup'][$gid]}-->
- <span style="color:{$extGroup['color']};border:1px solid {$extGroup['color']};" class="usergroup-tag">
- {$extGroup['grouptitle']}
- </span>
- <!--{/loop}-->
- <!--{/if}-->
复制代码
**注意事项:**
1. 用户组数据来自`$_G['cache']['usergroup']`全局缓存,修改用户组后需更新缓存
2. `extgroupids`字段存储格式为逗号分隔的字符串,如"11,15,23"
3. 扩展用户组显示顺序与ID排列顺序一致,可通过`asort()`对数组进行排序
4. 游客用户需做判断处理:`<!--{if $post['authorid'] > 0}-->...<!--{/if}-->`
若需要进一步优化显示效果,建议通过CSS定义用户组徽章样式,或参考DZ插件网相关样式方案进行深度定制。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |