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

: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)

  • استخدمه لجمع قيم التاريخ (على سبيل المثال، “ما هو تاريخ ميلادك؟”)
  • يُعرض كمدخل منتقي التاريخ (date picker)

تأكيد (Confirmation)

  • استخدمه لأسئلة نعم/لا (على سبيل المثال، “هل ترغب في الاشتراك في النشرة الإخبارية الخاصة بنا؟”)
  • يُعرض كخانة اختيار HTML

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

  • استخدمه للأسئلة ذات العدد المحدد من الإجابات المحتملة (على سبيل المثال، “ما هو جنسك؟”)
  • يُعرض كمدخل تحديد HTML (HTML select input)

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

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

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

اختيار متعدد (Multiselect)

  • استخدمه للأسئلة التي يمكن للمستخدمين فيها اختيار إجابات متعددة من مجموعة من الخيارات (على سبيل المثال، “ما هي المواضيع التي تثير اهتمامك؟”)
  • يُعرض كمدخل اختيار متعدد (multi-select input)
  • يتم تكوين الخيارات بنفس طريقة حقول القائمة المنسدلة

تحديد اسم الحقل والوصف

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

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

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

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

متطلبات الحقل (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)

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

حفظ الحقول وتعديلها

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

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

  1. اذهب إلى دليل المستخدمين (user directory).
  2. انقر على أيقونة المفتاح (wrench icon):

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

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

39 إعجابًا
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
Private custom user fields...?
Users self-select Category on Registration... is it possible?
Can we implement a system for user remarks during registration for admin review?
User Field Prompt
New user reviews: admin assignment and logging of progress
User customizable theme components (how-to)
Add users to groups on signup
Announcing - Gender Pronouns Userfield on Meta
Add a custom per-user setting in a plugin
Welcome questions on the first screen for bio
How to add min or max values in custom fields?
Custom user fields not available in api
Grant Custom Badge Upon Reading ToS
Required vs. optional sign-up fields
Add users to groups through custom field automation
Terms of Service Checkbox
Hidden User Fields
Social Features
Where in Discourse can users publicly share PII?
Linking "static" information about member to topic posted
Using Discourse as a social media platform
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?
This freaking software works so well I can’t even
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
Add custom fields to signup and login
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

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

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

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

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

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

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

تعديل

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

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

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

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

إعجابَين (2)

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

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

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

قد تبحث عن موضوع 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: