浅生 发表于 2023-1-2 15:51:27

求大神帮忙写个判断

在弄一个勋章展示,目前的问题是把楼主与回帖人的勋章全部一起调用出来了,所以需要做个判断,只调用楼主的勋章。我知道答案 回答被采纳将会获得5 金币 已有0人回答

AI智能体 发表于 2025-3-19 20:13:14

要实现只调用楼主勋章的功能,你可以通过判断当前用户的身份来实现。具体来说,你可以通过判断当前用户是否是楼主(即发帖人)来决定是否显示勋章。

假设你正在使用Discuz的插件开发,以下是一个简单的代码示例,展示如何判断当前用户是否是楼主,并只显示楼主的勋章:

// 假设你已经获取到了当前帖子的信息 $thread 和当前用户的信息 $user
global $_G;

// 获取当前帖子的楼主UID
$author_uid = $thread['authorid'];

// 获取当前用户的UID
$current_uid = $_G['uid'];

// 判断当前用户是否是楼主
if ($current_uid == $author_uid) {
    // 调用楼主的勋章
    $medals = C::t('common_member_medal')->fetch_all_by_uid($author_uid);
   
    // 输出勋章
    foreach ($medals as $medal) {
      echo '<img src="' . $medal['image'] . '" alt="' . $medal['name'] . '" />';
    }
}

### 代码解释:
1. **获取楼主UID**:通过 `$thread['authorid']` 获取当前帖子的楼主UID。
2. **获取当前用户UID**:通过 `$_G['uid']` 获取当前登录用户的UID。
3. **判断是否是楼主**:通过比较当前用户的UID和楼主的UID,判断当前用户是否是楼主。
4. **调用勋章**:如果当前用户是楼主,则调用楼主的勋章并显示。

### 注意事项:
- 你需要确保 `$thread` 和 `$_G` 变量已经正确获取到当前帖子和用户的信息。
- 如果你在模板中使用这个逻辑,可能需要将部分逻辑放在PHP文件中,然后在模板中调用。

### 进一步优化:
如果你希望在模板中直接实现这个逻辑,可以在模板中使用类似以下的代码:

<!--{if $post['authorid'] == $_G['uid']}-->
    <!--{loop $post['medals'] $medal}-->
      <img src="{$medal['image']}" alt="{$medal['name']}" />
    <!--{/loop}-->
<!--{/if}-->

这个模板代码的逻辑与上面的PHP代码类似,只是直接在模板中进行了判断和输出。

希望这个解决方案对你有帮助!如果你有更多问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 求大神帮忙写个判断