هل يمكن للمستخدمين إظهار مُعرّف المستخدم الخاص بهم في ملفهم الشخصي؟

هل هناك طريقة للمستخدمين لرؤية معرف المستخدم (User ID) الخاص بهم عندما يشاهد شخص ما ملفهم الشخصي؟

في الوقت الحالي، لا يمكن رؤية المعرفات إلا للمسؤولين عبر لوحة التحكم، ولكني أود أن يتمكن المستخدمون من عرض المعرف الخاص بهم علنًا.

هل هذا شيء يمكن تفعيله من خلال إعدادات المسؤول، أو مكون، أو إضافة (plugin)؟
أعلمني! من فضلك

إعجاب واحد (1)

يجب أن يكون ذلك قابلاً للتنفيذ في مكون سمة. معرف المستخدم متاح دون طلب إضافي، لذا ستحتاج فقط إلى بعض JavaScript لعرضه في منفذ إضافة (plugin outlet) في صفحة الملف الشخصي.

3 إعجابات

ما هي حالة الاستخدام؟ لماذا معرفة عدد صحيح عشوائي مهم؟

4 إعجابات

حسنًا، نظرًا لأن المعرّف الفريد للمستخدم (UID) غير قابل للتغيير (لا يتغير أبدًا)، فيمكنه أن يعمل كبصمة إصبع دائمة لحساب شخص ما. يمكن لأسماء المستخدمين أن تتغير، لذا بالنسبة لتذاكر الدعم، يمكنه العثور على حسابه ومعاملاته وجلسات المصادقة وما إلى ذلك على الفور… لا يمكن تزييف المعرّف الفريد للمستخدم وهو فريد إلى الأبد.
أرغب في أن يزداد المعرّف الفريد للمستخدم بمقدار 1 مع كل مستخدم جديد.

@Moin شكراً على الرد، لقد كان مفيداً. نعم، يمكنني رؤية الاستجابة في Network → XHR → Response. ممتاز. ولكني لا أعرف كيف أعرض UID في ملف تعريف حساب المستخدم. أريد عرضه هنا: https://mydomain.com/u//preferences/account
ولكن ضمن مكونات الإنشاء (create components) هناك فقط هذه الخيارات: , Before Header, After Header و Footer

هذا هو ما أريده في نهاية المطاف.

لقد تمكنت من عرض الـ UID باستخدام بعض أكواد JavaScript ولكنه يظهر فقط في ترويسة (header) الصفحة الرئيسية.

/my/preferences/account ليس عامًا؛ لا يمكن للمستخدمين الآخرين رؤيته، ولكن بناءً على حالة الاستخدام الخاصة بك، قد يكون كافيًا للمستخدم نفسه رؤية المعرّف الخاص به.

تحتاج إلى العثور على منفذ المكوّن الإضافي (plugin outlet) القريب من المكان الذي تريد عرض المعلومات فيه. عادةً ما أستخدم الزر الموجود في شريط أدوات المطور (developer toolbar) لجعلها مرئية في المنتدى. رؤيتها داخل المنتدى تجعل من الأسهل عليّ العثور على أفضل منفذ. يمكنك العثور على مزيد من المعلومات حول كيفية عرض شيء ما في منفذ في Theme Developer Tutorial: 1. Introduction

حسنًا، إذا أردت أن يراها الجميع (عامة)، فسأضعها ضمن: mydomain.com/u/<ملخص_المستخدم>
لذا باستخدام enableDevTools() ضمن وحدة تحكم المتصفح، أعتقد أن user-profile-secondary سيكون مكانًا جيدًا.
سأحاول الآن.

لقد علقت. كيف يمكنني الحصول على id المستخدم الذي أشاهده؟ لأن api.getCurrentUser يعطي المستخدم الذي قام بتسجيل الدخول

إعجاب واحد (1)

Custom Components -- add button or text at any plugin outlet هو مثال لكيفية تثبيت بعض النصوص في أي مكان يوجد به منفذ إضافي (plugin outlet). أعتقد أنك ستحتاج إلى إنشاء مكون السمة (theme component) الخاص بك للوصول إلى user_id.

أعتقد أنك ستفعل شيئًا كهذا عند استدعاء المكون الخاص بك:

        <YourIdComponent
          @user={{@user}}
        />
إعجاب واحد (1)

ولكن كيف أحصل على user.id لشخص آخر باستخدام الكود.

باستخدام منشور @pfaffman أعلاه، يمكنك بعد ذلك الحصول على مكون يستخدم {{@user.id}}. راجع https://meta.discourse.org/t/theme-developer-tutorial-5-building-and-using-components/357800، ولكن أعتقد أنه يمكنك القيام بذلك في تحرير CSS/HTML > JS في واجهة مستخدم Discourse TC، باستخدام api.renderInOutlet().

3 إعجابات

نعم، api.renderInOutlet() كانت حاسمة. ومع ذلك، كانت مشكلتي، والتي أصبحت الآن غير ذات صلة لأنني تعاملت معها بطريقة مختلفة، هي أنني لم أكن أعرف كيفية استرداد user.id للملف الشخصي الذي تتم مشاهدته.
هل لديك أي أفكار؟

إليك الإجابة، ولكن يبدو أنه ليس لديك الخلفية اللازمة لفهمها.

إعجاب واحد (1)

أعتقد أنه سيكون من الأسهل إذا اخترت منفذًا يوفر نموذج المستخدم الذي تعرض صفحته.
المنفذ الذي اخترته يوفر معلومات حول الموضوع ولكن ليس حول المستخدمين


المنافذ الموجودة في ملف تعريف المستخدم مثل `user-post-names` توفر نموذج المستخدم: https://github.com/discourse/discourse/blob/5b6d32804a1eb658fdc043b082336a17b4c1c944/frontend/discourse/app/templates/user.gjs#L220-L224 باستخدام منفذ يوفر النموذج، يجب أن تكون قادرًا على استخدام `@outletArgs` كما في المثال الموجود في https://meta.discourse.org/t/theme-developer-tutorial-4-using-outlets-to-insert-and-replace-content/357799. يستخدم المثال هناك `discovery-list-container-top` الذي يوفر `@outletArgs={{lazyHash category=@model.category tag=@model.tag}}`

لهذا السبب سأختار منفذًا يوفر نموذج المستخدم. يمكنك رؤية النموذج عند التمرير فوق المنفذ ورؤية معرف المستخدم الذي تعرض ملفه الشخصي. تستخدم العديد من الأمثلة في البرنامج التعليمي خدمة currentUser، والتي توفر معرف المستخدم الفاعل، وهو ليس ما تبدو أنك تبحث عنه.

إعجاب واحد (1)
import { apiInitializer } from "discourse/lib/api";

export default apiInitializer((api) => {
    
    api.renderInOutlet("user-post-names",
    <template>
        {{#if @outletArgs.model}}
            <div class="uid-label-profile">
                المعرف:
                <span class="uid-value-profile">
                {{ @outletArgs.model.id }}
                </span>
            </div>
        {{/if}}
    </template>
    );

});

@Moin كان تحليلك دقيقًا تمامًا - لقد اتبعته للتو وكل شيء يعمل بسلاسة الآن. شكرًا لك.

3 إعجابات