这些链接使用了略有不同的序列化器——因为在那里不需要所有的组数据。
不过,您可以在初始页面视图中存储当前用户群组的过滤列表,并将其用作检查成员资格的参考。这些信息已包含在初始负载中,因此不会产生额外请求等开销。类似这样:
<script type="text/discourse-plugin" version="0.8">
const user = api.getCurrentUser();
if (!user) {
return;
}
const userGroups = user.groups.map(group => group.name);
api.reopenWidget("pm-map-user-group", {
transform(attrs) {
const group = attrs.group;
const isGroupUser = Object.values(userGroups).includes(group.name);
// {href: "/g/foo"};
let groupURL = this._super(...arguments);
if (isGroupUser && group.has_messages) {
groupURL.href = `${groupURL.href}/messages/`;
}
return groupURL;
}
});
</script>
将此代码段保留在其自己的脚本标签中,并将其添加到标题中,与其他代码段一起。您将其分开是因为如果用户未登录,它会快速退出。