يشرح هذا الدليل كيفية إنشاء حقول مستخدم مخصصة وتكوينها في Discourse، بما في ذلك كيفية إضافتها إلى نموذج التسجيل وملفات تعريف المستخدمين ودليل المستخدمين.
مستوى المستخدم المطلوب: مسؤول
تتيح لك حقول المستخدم المخصصة جمع معلومات إضافية من المستخدمين بخلاف حقول الملف الشخصي القياسية. يمكن عرض هذه الحقول في بطاقات المستخدمين وصفحات ملخص المستخدمين، بل ويمكن استرجاعها باستخدام الملحق مستكشف البيانات (Data Explorer). سيرشدك هذا الدليل خلال عملية إنشاء حقول المستخدم المخصصة وتكوينها.
إضافة حقل مستخدم
اذهب إلى مسؤول (Admin) > المجتمع (Community) > حقول المستخدم (User Fields) (
discourse.example.com/admin/config/user-fields).إذا لم تقم بإنشاء أي حقول مستخدم بعد، سترى هذه الشاشة:
انقر على زر “إضافة حقل مستخدم” (Add user field) لإضافة حقل جديد.
اختيار نوع الحقل
يحدد نوع الحقل حقل الإدخال الذي سيراه المستخدمون في نموذج التسجيل. اختر بناءً على نوع المعلومات التي تقوم بجمعها:
حقل نصي (Text field)
- استخدمه للأسئلة القصيرة ذات الإجابات المحتملة العديدة (على سبيل المثال، “ما الشركة التي تعمل بها؟”)
- يُعرض كإدخال نصي HTML في سطر واحد
مربع نص (Textarea)
- استخدمه للأسئلة التي قد تتطلب إجابات أطول ومتعددة الأسطر (على سبيل المثال، “أخبرنا عن نفسك”)
- يُعرض كإدخال مربع نص HTML متعدد الأسطر
تاريخ (Date)
- استخدمه لجمع قيم التاريخ (على سبيل المثال، “ما هو تاريخ ميلادك؟”)
- يُعرض كمدخل منتقي التاريخ (date picker)
تأكيد (Confirmation)
- استخدمه لأسئلة نعم/لا (على سبيل المثال، “هل ترغب في الاشتراك في النشرة الإخبارية الخاصة بنا؟”)
- يُعرض كخانة اختيار HTML
قائمة منسدلة (Dropdown)
- استخدمه للأسئلة ذات العدد المحدد من الإجابات المحتملة (على سبيل المثال، “ما هو جنسك؟”)
- يُعرض كمدخل تحديد HTML (HTML select input)
لإضافة خيارات لحقل القائمة المنسدلة:
- انقر على إدخال الخيار (option input)
- اكتب إجابة وانقر على “إنشاء” (Create)
- كرر للخيارات الإضافية
يجب أن تبدو الخيارات المكتملة مشابهة لما يلي:
اختيار متعدد (Multiselect)
- استخدمه للأسئلة التي يمكن للمستخدمين فيها اختيار إجابات متعددة من مجموعة من الخيارات (على سبيل المثال، “ما هي المواضيع التي تثير اهتمامك؟”)
- يُعرض كمدخل اختيار متعدد (multi-select input)
- يتم تكوين الخيارات بنفس طريقة حقول القائمة المنسدلة
تحديد اسم الحقل والوصف
- اسم الحقل (Field Name): يظهر قبل الإدخال في نموذج التسجيل وملف تعريف المستخدم.
- وصف الحقل (Field Description): يظهر بعد الإدخال لمساعدة المستخدمين على إكمال الحقل.
يتطلب كل من اسم الحقل والوصف لحفظ الحقل.
إليك كيف تظهر الحقول المخصصة في نموذج التسجيل:
تكوين خيارات حقل المستخدم
متطلبات الحقل (Field Requirements)
- اختياري (Optional) - يمكن للمستخدمين ترك الحقول الاختيارية فارغة.
- لجميع المستخدمين (For all users) - عندما يكون الحقل مطلوبًا لجميع المستخدمين، سيتم إجبار كل حساب، بما في ذلك المستخدمين المسجلين الدخول، على ملئه. هذا مفيد جدًا لحالات مثل متطلبات شروط الخدمة (ToS).
- عند التسجيل (On signup) - سيُطلب من جميع الحسابات الجديدة ملء الحقل.
بالإضافة إلى ذلك، ستجد مربعات الاختيار هذه في الجزء السفلي من نموذج الإنشاء:
- قابل للتعديل بعد التسجيل (Editable after signup): يسمح للمستخدمين بتحديث الحقل من صفحة ملفهم الشخصي.
- الإظهار في الملف الشخصي العام (Show on public profile): يعرض قيمة الحقل في صفحة ملخص المستخدم.
- الإظهار في بطاقة المستخدم (Show on user card): يعرض قيمة الحقل في بطاقة المستخدم.
- قابل للبحث (Searchable): يتيح البحث عن المستخدمين بناءً على قيمة حقلهم المخصص في دليل المستخدمين.
- الإظهار في نموذج التسجيل (Show on signup form): يتحكم فيما إذا كان الحقل يظهر في نموذج التسجيل. يتم تمكينه تلقائيًا (ولا يمكن تعطيله) عندما يكون متطلب الحقل “لجميع المستخدمين” أو “عند التسجيل”، أو عندما لا يكون الحقل قابلاً للتعديل بعد التسجيل.
الإظهار في الملف الشخصي العام (Show on public profile)
عند التمكين، سيتم عرض قيمة الحقل في صفحة ملف تعريف المستخدم:
الإظهار في بطاقة المستخدم (Show on user card)
عند التمكين، سيتم عرض قيمة الحقل في بطاقة المستخدم:
قابل للبحث (Searchable)
عند التمكين، يمكنك البحث عن المستخدمين بناءً على قيم حقولهم المخصصة:
حفظ الحقول وتعديلها
- انقر على “حفظ” (Save) لإضافة الحقل إلى قائمة حقول المستخدمين في موقعك.
- لتعديل حقل، انقر على زر “تعديل” (Edit) بجانبه في القائمة.
- لحذف حقل، انقر على قائمة النقاط الثلاث (⋮) بجانبه واختر “حذف” (Delete).
إضافة حقول مخصصة إلى دليل المستخدمين
- اذهب إلى دليل المستخدمين (user directory).
- انقر على أيقونة المفتاح (wrench icon):
- حدد حقول المستخدم المخصصة التي تريد عرضها.
- انقر على “حفظ” (Save).
ستظهر حقول المستخدم المخصصة المحددة الآن في جدول دليل المستخدمين:
أعتقد أن هناك صورتين مفقودتين تحت هذه العناوين:
لست متأكدًا مما إذا كان الأمر يتعلق بـ صور مفقودة في Meta.discourse.org - سأنشر هناك أيضًا.
هل يمكنني رؤية تلك الصور؟ (أيضًا في نافذة مجهولة)
لا يمكنني رؤية هؤلاء
لكن الثاني يعمل في اقتباسي.
تعديل
من المثير للاهتمام أنني أستطيع رؤية الصورة الثانية في الاقتباس، ولكن ليس في المنشور الأصلي^^
هممم. هذا مثير للاهتمام. أعتقد أن هناك إصلاحًا قادمًا لمشكلة Missing images at Meta.discourse.org ، لذا نأمل أن يتم حلها بحلول ذلك الوقت. ![]()
هل هناك إعداد يجب تعديله لتحديد الحد الأقصى لطول حقل مستخدم مخصص؟ حاليًا، في حقل “Test” هذا الذي أنشأته كحقل مستخدم اختباري، لا يمكنني إدخال حرف واحد في ملف تعريف المستخدم الخاص بي (أو حتى “Test”، كما هو موضح).
أود حقل من نوع: رابط / عنوان URL، هل هذا ممكن؟
بما أن عناوين URL هي نصوص، فإن حقل النص يعمل تقنيًا، @Vaping_Community. ومع ذلك، قد تكون تطلب تفاصيل إضافية مثل التحقق من القيمة أو ما شابه ذلك.
قد تبحث عن موضوع Feature أو تنشئه بما تفكر فيه. ![]()
هل هناك أي خطط للسماح بأسطر متعددة/محرر لحقول المستخدم المخصصة؟ ![]()
لاحظ أنه إذا كنت ترغب في تضمين رابط في أحد حقول المستخدم المخصصة، فيجب عليك استخدام صيغة HTML!
<a>رابط</a>
على سبيل المثال، للإقرار بإرشادات/سياسات المجتمع:
هل يمكنني ربط مطالبة مخصصة من Auth0 SSO الخاص بي بحقل مخصص؟ حاليًا، يدخل المستخدم معلومات الحقل في Auth0، ثم يضطر إلى إدخالها مرة أخرى عند التسجيل. أود تعيين القيمة إذا أمكن.
نعم، هذا ممكن:
ضمن نقطة نهاية تسجيل الدخول الموحد (SSO) الخاصة بك، لديك القدرة على تعيين المطالبة إلى الحمولة، على سبيل المثال:
const ssoPayload = {
nonce: nonce,
email: user.email,
external_id: user.sub,
username: user.nickname,
name: user.name,
add_groups: a_custom_group,
'custom.user_field_1': user['https://yourdomain.com/company_id'],
'custom.user_field_2': [etc...]
شكراً @dax
هل هناك طريقة للتحقق من اسم الحقل في قاعدة البيانات؟ على سبيل المثال، لدينا حقل الاسم الأول، جربت custom.firstname و custom.first_name و custom.firstName، ولم يؤدِ أي منها إلى ملء الحقول في شاشة التسجيل.
لقد تحققت من سجلات الأخطاء للتأكد من أن حقول الرمز المميز تأتي كما هو موضح أعلاه.
بالتعمق أكثر في الكود هنا، هل هذا فقط لـ Discourse Connect SSO؟ نحن نستخدم إضافة Auth0
يجب أن يكون بناء الجملة 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”). هل فاتني شيء ما أم أن هذا إغفال؟ من المزعج حقًا الاضطرار إلى تعديل الحقل لمعرفة ما إذا كان اختياريًا أم لا. (لست متأكدًا مما إذا كان هذا هو المكان المناسب لذلك، لم أكن متأكدًا من أين أضعه.)
ربما يمكن أن يكون ملف json الذي يوفر البيانات مفيدًا بعض الشيء. إنه ليس جميلًا ولكن يمكنك النظر إلى /admin/config/user-fields.json والحصول على شيء مثل
{
"id": 18,
"name": "Age",
"description": "How old are you?",
"field_type": "text",
"editable": true,
"required": false,
"requirement": "optional",
"show_on_profile": false,
"show_on_user_card": false,
"show_on_signup": false,
"searchable": false,
"position": 9
},
{
"id": 17,
"name": "pets",
"description": "choose your favourite",
"field_type": "dropdown",
"editable": true,
"required": false,
"requirement": "optional",
"show_on_profile": false,
"show_on_user_card": false,
"show_on_signup": false,
"searchable": false,
"position": 10,
"options": [
"cat",
"mouse",
"dog"
]
},
ولكن بالطبع هذا ليس بجمال المعلومات الموجودة في الواجهة
أوه، هذا أسهل بكثير بالنسبة لي للعمل به!
هل هذا يعني أنه يمكنني فقط تعديل هذا الملف والانتهاء من الأمر؟ هل هو موجود في مكان ما كهذا على الخادم الخاص بي، وأين أجده؟ ![]()
![]()
![]()


















