إنشاء وتخصيص حقول المستخدم

:bookmark: يشرح هذا الدليل كيفية إنشاء وتخصيص حقول مستخدم مخصصة في Discourse، بما في ذلك كيفية إضافتها إلى نموذج التسجيل، وملفات المستخدم الشخصية، ومدير المستخدمين.

:person_raising_hand: مستوى المستخدم المطلوب: مدير

تتيح لك حقول المستخدم المخصصة جمع معلومات إضافية من مستخدميك تتجاوز حقول الملف الشخصي القياسية. يمكن عرض هذه الحقول في بطاقات المستخدم، وصفحات ملخص المستخدم، وحتى استرجاعها باستخدام إضافة Data Explorer. سيرشدك هذا الدليل عبر عملية إنشاء وتخصيص حقول المستخدم المخصصة.

إضافة حقل مستخدم

  1. انتقل إلى Admin > Community > User Fields (discourse.example.com/admin/config/user-fields).

  2. إذا لم تقم بإنشاء أي حقول مستخدم بعد، فستظهر لك هذه الشاشة:

  3. انقر على زر “إضافة حقل مستخدم” (Add user field) لإضافة حقل جديد.

اختيار نوع الحقل

يحدد نوع الحقل حقل الإدخال الذي سيراه المستخدمون في نموذج التسجيل. اختر بناءً على نوع المعلومات التي تجمعها:

حقل نصي (Text field)

  • استخدمه للأسئلة القصيرة التي لها العديد من الإجابات المحتملة (مثال: “ما اسم الشركة التي تعمل بها؟”)
  • يظهر كحقل إدخال نصي HTML من سطر واحد

منطقة نصية (Textarea)

  • استخدمه للأسئلة التي قد تتطلب إجابات أطول متعددة الأسطر (مثال: “أخبرنا عن نفسك”)
  • تظهر كحقل إدخال منطقة نصية HTML متعدد الأسطر

تاريخ (Date)

  • استخدمه لجمع قيم التاريخ (مثال: “ما هو تاريخ ميلادك؟”)
  • يظهر كحقل اختيار تاريخ

تأكيد (Confirmation)

  • استخدمه لأسئلة نعم/لا (مثال: “هل ترغب في الاشتراك في نشرتنا الإخبارية؟”)
  • يظهر كخانة اختيار HTML (checkbox)
  • أضف روابط مهمة للمستخدمين للتأكيد باستخدام HTML، على سبيل المثال:
    أوافق على قراءة واتباع <a href="https://meta.discourse.org/guidelines">إرشادات المجتمع.</a>

قائمة منسدلة (Dropdown)

  • استخدمه للأسئلة التي لها عدد محدد من الإجابات المحتملة (مثال: “ما هو جنسك؟”)
  • يظهر كحقل إدخال اختيار HTML (select input)

لإضافة خيارات لحقل القائمة المنسدلة:

  1. انقر على حقل إدخال الخيار
  2. اكتب إجابة وانقر على “إنشاء” (Create)
  3. كرر العملية للخيارات الإضافية

يجب أن تبدو الخيارات المكتملة مشابهة لهذا:

تحديد متعدد (Multiselect)

  • استخدمه للأسئلة التي يمكن للمستخدمين فيها اختيار إجابات متعددة من مجموعة من الخيارات (مثال: “ما هي المواضيع التي تهمك؟”)
  • يظهر كحقل إدخال تحديد متعدد
  • يتم تكوين الخيارات بنفس طريقة حقول القائمة المنسدلة

تعيين اسم الحقل والوصف

  • اسم الحقل (Field Name): يظهر قبل حقل الإدخال في نموذج التسجيل وملف المستخدم الشخصي
  • وصف الحقل (Field Description): يظهر بعد حقل الإدخال لمساعدة المستخدمين على إكمال الحقل

:information_source: كلا من اسم الحقل والوصف مطلوبان لحفظ الحقل.

إليك كيف تظهر الحقول المخصصة في نموذج التسجيل:

تكوين خيارات حقل المستخدم

متطلبات الحقل

  • اختياري (Optional) - يمكن للمستخدمين ترك الحقول الاختيارية فارغة
  • لجميع المستخدمين (For all users) - عندما يكون الحقل مطلوبًا لجميع المستخدمين، سيُجبر كل حساب، بما في ذلك المستخدمين المسجلين بالفعل، على ملئه. هذا مفيد جدًا لحالات مثل متطلبات شروط الخدمة (ToS).
  • عند التسجيل (On signup) - سيُطلب من جميع الحسابات الجديدة ملء الحقل.

بالإضافة إلى ذلك، في أسفل نموذج الإنشاء، ستجد خانات الاختيار التالية:

  • قابل للتعديل بعد التسجيل (Editable after signup): يسمح للمستخدمين بتحديث الحقل من صفحة ملفهم الشخصي
  • عرض في الملف الشخصي العام (Show on public profile): يعرض قيمة الحقل في صفحة ملخص المستخدم
  • عرض في بطاقة المستخدم (Show on user card): يعرض قيمة الحقل في بطاقة المستخدم
  • قابل للبحث (Searchable): يتيح البحث عن المستخدمين بناءً على قيمة هذا الحقل في مدير المستخدمين
  • عرض في نموذج التسجيل (Show on signup form): يتحكم في ما إذا كان الحقل يظهر في نموذج التسجيل. يتم تفعيل هذا تلقائيًا (ولا يمكن تعطيله) عندما تكون متطلبات الحقل “لجميع المستخدمين” أو “عند التسجيل”، أو عندما لا يكون الحقل قابلًا للتعديل بعد التسجيل.

عرض في الملف الشخصي العام

عند التفعيل، ستظهر قيمة الحقل في صفحة ملف المستخدم الشخصي:

عرض في بطاقة المستخدم

عند التفعيل، ستظهر قيمة الحقل في بطاقة المستخدم:

قابل للبحث

عند التفعيل، يمكنك البحث عن المستخدمين بناءً على قيم حقولهم المخصصة:

حفظ الحقول وتحريرها

  1. انقر على “حفظ” (Save) لإضافة الحقل إلى قائمة حقول المستخدمين في موقعك
  2. لتحرير حقل، انقر على زر “تحرير” (Edit) بجانبه في القائمة
  3. لحذف حقل، انقر على قائمة النقاط (⋮) بجانبه واختر “حذف” (Delete)

إضافة الحقول المخصصة إلى مدير المستخدمين

  1. انتقل إلى مدير المستخدمين
  2. انقر على أيقونة المفتاح:

  1. حدد حقول المستخدم المخصصة التي تريد عرضها
  2. انقر على “حفظ” (Save)

ستظهر الآن الحقول المخصصة المحددة في جدول مدير المستخدمين:

40 إعجابًا
Any Plugins/Easy Mods for an Extended User Profile
Add introductory text for sign-up
Setting Security Parameters: Log-In, Read-Only, Protected Groups
Theme-Component v Plugin: What's the difference
User preference on theme components
Users self-select Category on Registration... is it possible?
Private custom user fields...?
Can we implement a system for user remarks during registration for admin review?
User customizable theme components (how-to)
This freaking software works so well I can’t even
User Field Prompt
New user reviews: admin assignment and logging of progress
Add users to groups on signup
How to add min or max values in custom fields?
Add a custom per-user setting in a plugin
Welcome questions on the first screen for bio
Announcing - Gender Pronouns Userfield on Meta
Grant Custom Badge Upon Reading ToS
If topic info is too long, tags are cut off and create a blank line
Required vs. optional sign-up fields
Terms of Service Checkbox
Hidden User Fields
New user filter by custom field and contact
Social Features
Where in Discourse can users publicly share PII?
Linking "static" information about member to topic posted
Add custom fields to signup and login
Using Discourse as a social media platform
Add users to groups through custom field automation
Custom user post display
Disable account confirm emails when creating users via API
Links in additional fields
Clickable Social Icon Links on Profile
Extend Existing Controller?
Requiring acceptance of terms and conditions
"Fake" OAuth Provider?
Extend Existing Controller?
Allow users to block keywords
Customize Your Site Branding
Restrict the users to post in the groups who haven't uploaded their profile picture
Adding non-visible user custom fields to the API
Seeking Advice: making a discourse forum hyper local
Can add short message to verify? Just input phone number can sign up
Add terms when make new topic
Export custom field for users in discourse hosted forum
Customizing Sign-up and Log in
Grouping poll results by user custom field
Disclaimer for tutorials
How to add custom logic input on the signup page?
Terms of service changes in Discourse platform
Custom user fields not available in api

أعتقد أن هناك صورتين مفقودتين تحت هذه العناوين:

لست متأكدًا مما إذا كان الأمر يتعلق بـ صور مفقودة في Meta.discourse.org - سأنشر هناك أيضًا.

هل يمكنني رؤية تلك الصور؟ (أيضًا في نافذة مجهولة)

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

لا يمكنني رؤية هؤلاء

لكن الثاني يعمل في اقتباسي.

تعديل

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

من المثير للاهتمام أنني أستطيع رؤية الصورة الثانية في الاقتباس، ولكن ليس في المنشور الأصلي^^

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

هممم. هذا مثير للاهتمام. أعتقد أن هناك إصلاحًا قادمًا لمشكلة Missing images at Meta.discourse.org ، لذا نأمل أن يتم حلها بحلول ذلك الوقت. :crossed_fingers:

إعجابَين (2)

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

أود حقل من نوع: رابط / عنوان URL، هل هذا ممكن؟

بما أن عناوين URL هي نصوص، فإن حقل النص يعمل تقنيًا، @Vaping_Community. ومع ذلك، قد تكون تطلب تفاصيل إضافية مثل التحقق من صحة القيمة أو ما شابه.

يمكنك البحث عن موضوع Contribute > Feature أو إنشاء واحد بما يدور في ذهنك. :slight_smile:

3 إعجابات

هل هناك أي خطط للسماح بأسطر متعددة/محرر لحقول المستخدم المخصصة؟ :folded_hands:

لاحظ أنه إذا كنت ترغب في تضمين رابط في أحد حقول المستخدم المخصصة، فيجب عليك استخدام صيغة HTML!
<a>رابط</a>

على سبيل المثال، للإقرار بإرشادات/سياسات المجتمع:

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

هل يمكنني ربط مطالبة مخصصة من 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...]
3 إعجابات

شكراً @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 نفسها.

إذا كنت مهتمًا باستكشاف الخيار الأخير، يمكننا مواصلة المناقشة بشكل خاص.

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

أتساءل عما إذا كانت هناك طريقة أقل تعقيدًا لإعادة تنظيم قائمة طويلة من حقول المستخدم بدلاً من النقر الفردي على الأسهم الصغيرة لتحريكها لأعلى أو لأسفل خطوة واحدة في كل مرة… :face_with_peeking_eye:

في نظرة عامة على قائمة حقول المستخدم، لا أستطيع رؤية كيفية التمييز بين الحقول الموجودة في نموذج التسجيل وإلزامية (مثل “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"
      ]
    },

ولكن بالطبع هذا ليس بجمال المعلومات الموجودة في الواجهة

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

أوه، هذا أسهل بكثير بالنسبة لي للعمل به!
هل هذا يعني أنه يمكنني فقط تعديل هذا الملف والانتهاء من الأمر؟ هل هو موجود في مكان ما كهذا على الخادم الخاص بي، وأين أجده؟ :heart_eyes::heart_eyes::heart_eyes: