يشرح هذا الدليل كيفية إنشاء وتخصيص حقول مستخدم مخصصة في Discourse، بما في ذلك كيفية إضافتها إلى نموذج التسجيل، وملفات المستخدم الشخصية، ومدير المستخدمين.
مستوى المستخدم المطلوب: مدير
تتيح لك حقول المستخدم المخصصة جمع معلومات إضافية من مستخدميك تتجاوز حقول الملف الشخصي القياسية. يمكن عرض هذه الحقول في بطاقات المستخدم، وصفحات ملخص المستخدم، وحتى استرجاعها باستخدام إضافة Data Explorer. سيرشدك هذا الدليل عبر عملية إنشاء وتخصيص حقول المستخدم المخصصة.
إضافة حقل مستخدم
انتقل إلى Admin > Community > User Fields (discourse.example.com/admin/config/user-fields).
إذا لم تقم بإنشاء أي حقول مستخدم بعد، فستظهر لك هذه الشاشة:
أضف روابط مهمة للمستخدمين للتأكيد باستخدام HTML، على سبيل المثال: أوافق على قراءة واتباع <a href="https://meta.discourse.org/guidelines">إرشادات المجتمع.</a>
اختياري (Optional) - يمكن للمستخدمين ترك الحقول الاختيارية فارغة
لجميع المستخدمين (For all users) - عندما يكون الحقل مطلوبًا لجميع المستخدمين، سيُجبر كل حساب، بما في ذلك المستخدمين المسجلين بالفعل، على ملئه. هذا مفيد جدًا لحالات مثل متطلبات شروط الخدمة (ToS).
عند التسجيل (On signup) - سيُطلب من جميع الحسابات الجديدة ملء الحقل.
بالإضافة إلى ذلك، في أسفل نموذج الإنشاء، ستجد خانات الاختيار التالية:
قابل للتعديل بعد التسجيل (Editable after signup): يسمح للمستخدمين بتحديث الحقل من صفحة ملفهم الشخصي
عرض في الملف الشخصي العام (Show on public profile): يعرض قيمة الحقل في صفحة ملخص المستخدم
عرض في بطاقة المستخدم (Show on user card): يعرض قيمة الحقل في بطاقة المستخدم
قابل للبحث (Searchable): يتيح البحث عن المستخدمين بناءً على قيمة هذا الحقل في مدير المستخدمين
عرض في نموذج التسجيل (Show on signup form): يتحكم في ما إذا كان الحقل يظهر في نموذج التسجيل. يتم تفعيل هذا تلقائيًا (ولا يمكن تعطيله) عندما تكون متطلبات الحقل “لجميع المستخدمين” أو “عند التسجيل”، أو عندما لا يكون الحقل قابلًا للتعديل بعد التسجيل.
عرض في الملف الشخصي العام
عند التفعيل، ستظهر قيمة الحقل في صفحة ملف المستخدم الشخصي:
هل هناك إعداد يجب تعديله لتحديد الحد الأقصى لطول حقل مستخدم مخصص؟ حاليًا، في حقل “Test” هذا الذي أنشأته كحقل مستخدم اختباري، لا يمكنني إدخال حرف واحد في ملف تعريف المستخدم الخاص بي (أو حتى “Test”، كما هو موضح).
هل يمكنني ربط مطالبة مخصصة من Auth0 SSO الخاص بي بحقل مخصص؟ حاليًا، يدخل المستخدم معلومات الحقل في Auth0، ثم يضطر إلى إدخالها مرة أخرى عند التسجيل. أود تعيين القيمة إذا أمكن.
هل هناك طريقة للتحقق من اسم الحقل في قاعدة البيانات؟ على سبيل المثال، لدينا حقل الاسم الأول، جربت custom.firstname و custom.first_name و custom.firstName، ولم يؤدِ أي منها إلى ملء الحقول في شاشة التسجيل.
لقد تحققت من سجلات الأخطاء للتأكد من أن حقول الرمز المميز تأتي كما هو موضح أعلاه.
يجب أن يكون بناء الجملة custom.user_field_x، حيث x هو معرف الحقل الرقمي المعروض في /admin/config/user-fields/{x}/edit.
ميزة التعيين هذه غير متوفرة في إضافة Auth0 مباشرة.
ومع ذلك، لا تزال هناك خيارات لتحقيق ما تصفه:
إنشاء مكون سمة. يمكنك إضافة نص برمجي صغير للواجهة الأمامية يقوم تلقائيًا بمزامنة حقل مستخدم مخصص في Discourse مع قيمة مخزنة بالفعل في Auth0. على سبيل المثال، عند تسجيل دخول المستخدم وكان الحقل فارغًا، يمكن للنص البرمجي استدعاء نقطة نهاية آمنة (وظيفة سحابية صغيرة) تجلب قيمة الحقل من Auth0 وتحدث ملف تعريف Discourse عبر واجهة برمجة التطبيقات (API).
استخدام أدوات الأتمتة. يمكنك أيضًا استخدام خدمات الأتمتة الخارجية مثل Zapier أو Make لأداء هذه المزامنة خارج Discourse. الميزة هي أنك لا تحتاج إلى كتابة/صيانة التعليمات البرمجية ولكنك تدفع فقط مقابل خدمة الطرف الثالث.
تطوير مخصص. يمكننا توسيع إضافة Auth0 نفسها لدعم تعيين المطالبات المخصصة في حقول المستخدم عند تسجيل الدخول بشكل أصلي، أو بناء إضافة مخصصة تعمل بالتوازي مع إضافة Auth0.
العيب الواضح لنهج مكون السمة هو أنك ستحتاج إلى كتابة وصيانة التعليمات البرمجية المخصصة بنفسك، مع توخي الحذر أيضًا من الناحية الأمنية لتجنب إدخال أخطاء أو ثغرات محتملة. بصراحة، هذا ليس حلاً أوصي به لموقع إنتاجي مثل موقعك.
لو كنت مكانك، لفضلت الخيار الثاني، باستخدام أدوات الطرف الثالث، أو النظر في تقديم طلب ميزة أو طلب عمل مخصص (اعتمادًا على تقييم مديري المشاريع لدينا) لتعزيز إضافة Auth0 نفسها.
إذا كنت مهتمًا باستكشاف الخيار الأخير، يمكننا مواصلة المناقشة بشكل خاص.
أتساءل عما إذا كانت هناك طريقة أقل تعقيدًا لإعادة تنظيم قائمة طويلة من حقول المستخدم بدلاً من النقر الفردي على الأسهم الصغيرة لتحريكها لأعلى أو لأسفل خطوة واحدة في كل مرة…
في نظرة عامة على قائمة حقول المستخدم، لا أستطيع رؤية كيفية التمييز بين الحقول الموجودة في نموذج التسجيل وإلزامية (مثل “Je suis…” و “Pays”) وتلك الموجودة في نموذج التسجيل ولكنها اختيارية (مثل “Mes attentes”). هل فاتني شيء ما أم أن هذا إغفال؟ من المزعج حقًا الاضطرار إلى تعديل الحقل لمعرفة ما إذا كان اختياريًا أم لا. (لست متأكدًا مما إذا كان هذا هو المكان المناسب لذلك، لم أكن متأكدًا من أين أضعه.)
أوه، هذا أسهل بكثير بالنسبة لي للعمل به!
هل هذا يعني أنه يمكنني فقط تعديل هذا الملف والانتهاء من الأمر؟ هل هو موجود في مكان ما كهذا على الخادم الخاص بي، وأين أجده؟