哥斯拉 发表于 2024-3-14 19:24:32

如何在帖子页调用用户组和拓展用户组名称 New

我想在discuz3.5 这个版本的帖子内容页(viewthread),会员个人信息显示区域显示【会员积分】【会员用户组】【会员扩展用户组】这三样,
目前添加了$post['extcredits1'] ,能够调用到会员积分, 【会员用户组】和【会员扩展用户组】不知道如何写调用代码,麻烦指教下,谢谢



<div class="display pi<!--{if $post['first']}--> pione<!--{/if}-->" href="#replybtn_$post['pid']">                         <ul class="authi">               <div class="avatar"><img src="<!--{if !$post['authorid'] || $post['anonymous']}--><!--{avatar(0, 'small', true)}--><!--{else}--><!--{avatar($post['authorid'], 'small', true)}--><!--{/if}-->" /></div>                                 <li class="mtit">                                       <span class="y">                                                 总收入:<h>$post['extcredits1']</h><i>|</i>等级:<t>{$_G['group']['grouptitle']} / {$_G['group']['extgroupids']}</t>                                       </span>                                       <span class="z">                                       <!--{if $post['authorid'] && $post['username'] && !$post['anonymous']}-->                                                 <a href="home.php?mod=space&uid=$post['authorid']">$post['author']</a>                                       <!--{else}-->                                                 <!--{if !$post['authorid']}-->                                                 <a href="javascript:;">{lang guest} <em>$post['useip']{if $post['port']}:$post['port']{/if}</em></a>                                                 <!--{elseif $post['authorid'] && $post['username'] && $post['anonymous']}-->                                                 <!--{if $_G['forum']['ismoderator']}--><a href="home.php?mod=space&uid=$post['authorid']">{$_G['setting']['anonymoustext']}</a><!--{else}-->{$_G['setting']['anonymoustext']}<!--{/if}-->                                                 <!--{else}-->                                                 $post['author'] <em>{lang member_deleted}</em>                                                 <!--{/if}-->                                       <!--{/if}-->                                       </span>                                 </li>

我知道答案 回答被采纳将会获得1 贡献 已有0人回答

Discuz智能体 发表于 2025-3-14 07:01:29

在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智能体 生成,内容仅供参考,请仔细甄别。

AI智能体 发表于 2025-3-20 05:34:52

在Discuz! X3.5中,如果你想在帖子内容页(viewthread)的会员个人信息显示区域显示【会员积分】、【会员用户组】和【会员扩展用户组】,你可以通过修改模板文件和相关的PHP代码来实现。

### 1. 修改模板文件
首先,你需要找到并编辑帖子内容页的模板文件。通常,这个文件位于 `template/default/forum/viewthread.htm` 或你当前使用的模板目录下的 `viewthread.htm` 文件。

在 `viewthread.htm` 文件中,找到会员个人信息显示的区域。通常,这个区域会包含类似以下的代码:

<div class="authi">
    <a href="home.php?mod=space&uid=$post" target="_blank">$post</a>
</div>

在这个区域附近,你可以添加以下代码来显示【会员积分】、【会员用户组】和【会员扩展用户组】:

<div class="userinfo">
    <p>会员积分: $post</p>
    <p>会员用户组: $post</p>
    <p>会员扩展用户组: $post</p>
</div>

### 2. 修改PHP代码
接下来,你需要在 `source/module/forum/forum_viewthread.php` 文件中添加代码,以便在模板中能够调用到这些变量。

在 `forum_viewthread.php` 文件中,找到 `$postlist` 的循环部分,通常是在 `foreach($postlist as $k => $post)` 这个循环中。在这个循环中,你可以通过以下代码来获取用户的用户组和扩展用户组信息:

$post['groupname'] = $post['groupname']; // 会员用户组
$post['extgroupnames'] = $post['extgroupnames']; // 会员扩展用户组

确保这些变量在模板中可用。你可以通过 `$post['groupname']` 和 `$post['extgroupnames']` 来调用这些信息。

### 3. 保存并更新缓存
完成上述修改后,保存文件并更新Discuz!的缓存。你可以通过后台的“工具” -> “更新缓存”来更新缓存。

### 4. 测试
最后,打开一个帖子页面,查看会员个人信息显示区域是否正确地显示了【会员积分】、【会员用户组】和【会员扩展用户组】。

### 注意事项
- 在修改模板和PHP文件之前,建议先备份相关文件,以防止出现错误。
- 如果你使用的是自定义模板,确保在正确的模板目录下进行修改。
- 如果你对PHP和Discuz!的模板系统不熟悉,建议在修改前先学习相关知识,或者在有经验的开发者指导下进行。

通过以上步骤,你应该能够在帖子内容页的会员个人信息显示区域成功显示【会员积分】、【会员用户组】和【会员扩展用户组】。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 如何在帖子页调用用户组和拓展用户组名称 New