大家好,这是我在这里的第一篇帖子。我想知道Blizzard 论坛是如何在用户名旁边显示用户总帖子数的。
我通过使用 Discourse API 系统实现了类似的功能,如下所示:
但我相信有更好的方法可以做到这一点。我还计划显示用户徽章等。有人能帮帮我吗?谢谢。
大家好,这是我在这里的第一篇帖子。我想知道Blizzard 论坛是如何在用户名旁边显示用户总帖子数的。
我想知道是否存在任何模板/短代码系统。
您好!
如果您正在使用 API,我认为这是正确的方法。
您能否与我们分享您的代码?如有必要,我们可以提供改进建议。![]()
好的
<script type="text/discourse-plugin" version="0.1">
api.onPageChange(() => {
// 检查是否存在ID为'topic'的元素
if ($('#topic').length > 0) {
// 如果存在'topic'元素,则查找'data-user-id'属性
var userId = $('#topic article').data('user-id');
// 检查'data-user-id'属性是否存在
if (userId !== undefined) {
// 发起API请求以获取用户信息
apiReq(`admin/users/${userId}.json`, 'GET')
.then(data => {
// 处理响应数据
console.log('用户帖子数:', data.post_count);
// 检查用户字段["1"]是否有值
if (data.user_fields && data.user_fields["1"]) {
// 在第一个'names' div中显示用户字段
displayUserField(data.user_fields["1"]);
}
// 在第一个'names' div中显示帖子数
displayPostCount(data.post_count);
})
.catch(error => {
// 处理错误
console.error('API请求错误:', error);
});
} else {
console.log('未找到data-user-id属性');
}
} else {
console.log('未找到ID为"topic"的元素');
}
});
// 在第一个'names' div中显示用户字段的函数
function displayUserField(userFieldValue) {
// 查找第一个'names' div
var firstNamesDiv = $('.names:first');
// 创建一个带有'user-title'类的span元素
var userFieldSpan = $('<span></span>').addClass('user-title');
userFieldSpan.text(userFieldValue);
// 将span元素追加到第一个'names' div
firstNamesDiv.append(userFieldSpan);
}
// 在第一个'names' div中显示帖子数的函数
function displayPostCount(postCount) {
// 查找第一个'names' div
var firstNamesDiv = $('.names:first');
// 创建一个带有'user-title'类的span元素
var postCountSpan = $('<span></span>').addClass('user-title');
postCountSpan.text(postCount + ' 帖子');
// 将帖子数span元素追加到第一个'names' div
firstNamesDiv.append(postCountSpan);
}
</script>
我在另一个组件上有apiReq函数
在 Blizzard 中,他们会在评论者旁边显示帖子数,但我无法实现。
我明白了,你们部分使用了该 API。你们可以改进这段代码。给我几分钟时间,我马上回来。
好的。我是 Discourse 新手,所以对它知之甚少。
我不得不制作了一个插件。
为了在查看帖子或用户卡片时获取 post_count 值,有必要序列化数据以包含此字段。这只能通过插件来实现,依赖于每个用户的请求不是一个现实的解决方案。
试试看。如果你想看看的话,JS 部分在 assets 目录中。
你可能在 API 使用中忽略了一个特定功能,那就是通过 outlets 进行自定义的能力。
如果你想要更多选项,请告诉我。
我不知道是否应该发布这个插件,因为它很小,但还是发布了:
非常感谢您的努力。我会尝试一下。
我原本的计划是实现以下功能:
虽然这是一个小型插件,但我相信它值得发布。您可以考虑添加一些建议的新功能。
谢谢。
我安装了插件但它不起作用。
现在可以了。谢谢。
抱歉再次打扰您。使用一段时间后,我注意到它不包含主题。据我所知,主题也是一个帖子。
“创建的主题”是另一个统计数据。您想将此计数添加到帖子计数中,还是添加一个新文本,以便您拥有“主题:xx,帖子:yy”?
我实际上正试图获得类似 postCount + TopicCount 的值
我只是想把主题也算作帖子。
我还想在用户头衔(如果有的话)之后显示它。我尝试修改插件代码(在 fork 之后),但到目前为止还没有成功。
我更新了插件;如果对您有效,请告诉我。
非常感谢。它奏效了。
看起来很酷。可以添加总反应数 + FA 图标吗?
我无法编辑,所以我刚刚安装并测试了插件,效果非常不错。除了在移动端,帖子总数显示在名字的左侧。:)
@David_Ghost
您可以使用一些 CSS 来修复它:
.names.trigger-user-card > div:has(.user-post-user__container) {
order: 2;
}