ユーザーが自分のプロフィールを表示したときに、自分のユーザー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を見るだけで十分かもしれません。
情報を表示したい場所に近いプラグインのアウトレットを見つける必要があります。私は通常、開発者ツールバーのボタンを使用して、フォーラムでそれらを表示させます。フォーラム内でそれらを見ることで、最適なアウトレットを見つけやすくなります。アウトレットに何かを表示する方法の詳細については、Theme Developer Tutorial: 1. Introduction を参照してください。
承知いたしました。全員に表示したい(公開)場合、mydomain.com/u/<user-summary>内に配置することになります。
そのため、ブラウザコンソールでenableDevTools()を使用すると、**user-profile-secondary**が良い場所だと思います。
今から試してみます。
行き詰まりました。現在表示しているユーザーのidをどうやって取得すればよいでしょうか?なぜなら、api.getCurrentUserはログインしているユーザーを取得するからです。
Custom Components -- add button or text at any plugin outlet は、プラグインアウトレットのどこかにテキストやボタンを固定する方法の例です。user_id にアクセスするには、独自のテーマコンポーネントを作成する必要があると思います。
コンポーネントを呼び出す際には、次のようなことを行う必要があると思います。
<YourIdComponent
@user={{@user}}
/>
しかし、コードを使って他のユーザーの user.id を取得するにはどうすればよいですか。
@pfaffman さんの上記の投稿を使用すると、{{@user.id}} を使用するコンポーネントを作成できます。Theme Developer Tutorial: 5. Building and using components を参照してください。ただし、Discourse TC UI の「CSS/HTML の編集」>「JS」で、api.renderInOutlet() を使用して実行できると思います。
はい、api.renderInOutlet() は非常に役立ちました。しかし、私が別のアプローチをとったため今は無関係になりましたが、問題は閲覧中のプロファイルの user.id を取得する方法がわからなかったことでした。
何かアイデアはありますか?
これが答えですが、背景知識がないと理解できないようです。
ユーザーが表示しているページのモデルを提供するコンセントを選択する方が簡単だと思います。
選択したコンセントはトピックに関する情報を提供しますが、ユーザーに関する情報はありません。
user-post-names のようなユーザープロファイルのコンセントは、ユーザーモデルを提供します。
モデルを提供するコンセントを使用すると、Theme Developer Tutorial: 4. Using Outlets to insert and replace content の例のように @outletArgs を使用できるはずです。そこの例では discovery-list-container-top を使用しており、@outletArgs={{lazyHash category=@model.category tag=@model.tag}} を提供しています。
だからこそ、ユーザーモデルを提供するコンセントを選択します。コンセントの上にカーソルを合わせ、見ているユーザーのIDを確認すると、モデルを確認できます。チュートリアルの多くの例では、現在操作しているユーザーのIDを提供する currentUser サービスを使用していますが、これはあなたが求めているものではないようです。
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、あなたの分析は的確でした。それに従っただけで、すべてが完璧に機能するようになりました。ありがとうございます。