有没有办法让用户在查看个人资料时看到自己的 用户 ID?
目前,ID 只能通过管理面板对管理员可见,但我希望用户能够公开显示他们的 ID。
这是可以通过管理员设置、组件还是插件启用的功能?
请告诉我!谢谢。
有没有办法让用户在查看个人资料时看到自己的 用户 ID?
目前,ID 只能通过管理面板对管理员可见,但我希望用户能够公开显示他们的 ID。
这是可以通过管理员设置、组件还是插件启用的功能?
请告诉我!谢谢。
用例是什么?知道一个随机整数有什么重要性?
因为 UID 是不可变的(永不更改),它可以充当某人账户的永久指纹。用户名可以更改,因此对于支持工单,它可以立即找到他们的账户、交易、认证会话等……UID 不能被伪造,并且永远是唯一的。
我希望每个新用户都能使 UID 递增 1。
@Moin 感谢您的回复,这很有帮助。是的,我可以在“网络”→“XHR”→“响应”中查看响应。完美。但我不知道如何在用户的账户资料页中显示 UID。我想在以下位置显示它:https://mydomain.com/u//preferences/account
但在创建组件中只有这些选项:,标题前,标题后和页脚
这最终是我想要的效果。
我已经通过一些 JavaScript 使 UID 显示出来了,但它只显示在主页的页眉上。
/my/preferences/account 不是公开的;其他用户看不到,但根据您的用例,这可能足以让用户自己看到他们的 ID。
您需要找到一个最接近您想要显示信息的插件插口(plugin outlet)。我通常使用 开发者工具栏 中的按钮使它们在论坛上可见。在论坛中看到它们更容易帮助我找到最佳的插口。您可以在 Theme Developer Tutorial: 1. Introduction 中找到更多关于如何在插口中显示内容的信息。
好的,如果我想让所有人都看到它(公开),我会把它放在:mydomain.com/u/<user_summary>
所以通过在浏览器控制台中调用 enableDevTools(),我认为 user-profile-secondary 将是一个好地方。
我现在试试。
我卡住了。我如何获取我正在查看的用户的 id?因为 api.getCurrentUser 返回的是已登录用户的 ID。
Custom Components -- add button or text at any plugin outlet 是一个关于如何将一些文本固定到任何插件出口位置的示例。我认为你需要创建自己的主题组件才能访问 user_id。
我认为你在调用组件时会做类似以下的操作:
<YourIdComponent
@user={{@user}}
/>
但是如何通过代码获取其他用户的 user.id 呢。
使用上面 @pfaffman 的帖子,然后您可以拥有一个使用 {{@user.id}} 的组件。请参阅 https://meta.discourse.org/t/theme-developer-tutorial-5-building-and-using-components/357800,但我认为您可以在 Discourse TC UI 的“编辑 CSS/HTML”>“JS”中使用 api.renderInOutlet() 来实现它。
是的,api.renderInOutlet() 非常给力。然而,我之前遇到的问题——现在不重要了,因为我采用了不同的方法来解决——是我不知道如何获取正在查看的个人资料的 user.id。
你有什么想法吗?
这是答案,但听起来你没有理解它所需的背景知识。
我认为,如果您选择一个提供您正在查看的用户的模型的插口会更容易。
您选择的插口提供有关主题的信息,但不是有关用户的信息
这就是为什么我选择一个提供用户模型的插口。当您将鼠标悬停在插口上并看到您正在查看的用户的 ID 时,您可以看到模型。教程中的许多示例都使用 currentUser 服务,它提供当前用户的 ID,这似乎不是您要找的。
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
api.renderInOutlet("user-post-names",
`<template>
{{#if @outletArgs.model}}
<div class="uid-label-profile">
UID:
<span class="uid-value-profile">
{{ @outletArgs.model.id }}
</span>
</div>
{{/if}}
</template>
`);
});
@Moin 你的分析非常准确——我只是照着做了,现在一切都完美运行了。谢谢你。