كيفية إضافة حقول مخصصة إلى النماذج

هل من الممكن إضافة حقل مخصص للعلامات باستخدام نفس المنطق؟

إعجابَين (2)

هل تقدم أي شخص بهذا للمجموعات؟ إذا كان الأمر كذلك، هل يمكنك مشاركة ما فعلته؟

أعتقد أن هذا سيفي بالغرض. آمل أن يكون لا يزال محدثًا.

لا، لا تحتوي العلامات على حقول مخصصة. ما الذي تحاول تحقيقه؟

نعم، يجب أن يعمل هذا المستودع. فقط قم بتغيير جميع حالات my_field إلى اسم الحقل الخاص بك.

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

أحاول إنشاء المكون الإضافي التالي: Creating a User - Tag relation plugin

هل هناك المزيد من الوثائق حول كيفية تخصيص حقول المجموعات هذه؟ إنها تعمل بشكل رائع بالفعل مع هذا الكود الأساسي. ولكن كيف يمكن توسيعها بشكل صحيح؟

على سبيل المثال، أرغب في إضافة بعض حقول الإدخال، مثل:

<div class="control-group">
  <label class="control-label" for="map">إحداثيات الفصل</label>
  <input name="chapter_coordinates" id="chapter_coordinates" class="ember-text-field ember-view input-xlarge" value={{group.custom_fields.group_coordinates}} placeholder="على سبيل المثال 52.3727598,4.8936041" type="text">
  <div class="control-instructions">جلب الإحداثيات من https://nominatim.openstreetmap.org/</div>
</div>

لكنني أخمن فقط ما يجب فعله هنا ثم إضافة بقية أشياء Discourse. المثال أعلاه هو استخدام حقل للإحداثيات. أنوي استخدام g.json لإنشاء خريطة بناءً على بيانات وصفية للمجموعة.

أنوي أيضًا إضافة مربع اختيار لإرسال بريد إلكتروني إلى المجموعة مع إعداد بريد إلكتروني لتلك المجموعة.

<div class="control-group">
  <label class="control-label" for="map">الاتصال بالفصل عن طريق البريد الإلكتروني</label>
  {{input type="checkbox" checked=group.custom_fields.contact_group_by_email}}
  <span>{{i18n 'admin.groups.contact_group_by_email.label'}}</span>
</div>

ومع ذلك، فإن هذا الحقل من الأفضل وضعه في علامة التبويب التفاعلات. كيف أعرف ما يجب فعله لوضعه هناك؟ أود أن أصبح أكثر كفاءة في هذا. لكنني أفهم أن هذه المعلومات موجودة فقط في الكود، وليست موثقة في مكان ما. وهو أمر جيد على الأرجح، ولكنه يتطلب فقط المزيد من الوقت والجهد للعثور على ما أبحث عنه. على الرغم من أن ما أريد إضافته صغير جدًا، فقط بضعة حقول للمجموعات :nerd_face:

نعم، يمكن أن يكون الأمر صعبًا ومرهقًا بعض الشيء عند البدء في التنقل في قاعدة كود Discourse. يبدو أنك تحاول العمل مع GeoJSON. هل فكرت في استخدام أو توسيع المكون الإضافي للمواقع (Locations Plugin)؟ هذا مُعد بالفعل للعمل مع GeoJSON في Discourse.

دورة في تطوير المكونات الإضافية؟

لقد كنت أفكر في تقديم دورة مجانية في تطوير المكونات الإضافية لـ Discourse، وهو ما تحتاجه في الأساس. لقد كتبت بالفعل مواد الدورة التدريبية لدورة في تطوير السمات (انظر أدناه). إذا صوت 30 شخصًا لصالح دورة في تطوير المكونات الإضافية، فسأقوم بكتابتها وتقديم دورة (عبر Zoom) فيها.

  • كتابة وتقديم دورة في تطوير المكونات الإضافية
  • عدم كتابة وتقديم دورة في تطوير المكونات الإضافية
0 voters
مقدمة في تطوير السمات
  1. GitHub - pavilionedu/discourse-theme-introduction
  2. GitHub - pavilionedu/discourse-theme-css
  3. GitHub - pavilionedu/discourse-theme-colors
  4. GitHub - pavilionedu/discourse-theme-html-one
  5. GitHub - pavilionedu/discourse-theme-html-two
  6. https://github.com/pavilionedu/discourse-theme-javascript-one
  7. GitHub - pavilionedu/discourse-theme-javascript-two

ملاحظة: إذا وصل العدد إلى 30، فيرجى إعلامي.

5 إعجابات

رائع! سأستخدم في الواقع نسخة معدلة من خريطة مجتمع Fairphone هذه. يستخدمون المخرجات الخام بصيغة YAML لموضوع. لقد قمت بتعديل نسختي لاستخدام البيانات من g.json لرسم علامات على الخريطة. أفتقد فقط بعض الحقول مثل الإحداثيات وقيمة منطقية لاستخدام عنوان بريد إلكتروني في الخريطة. ربما بعض الأشياء الأخرى، لكن أولاً سأحتاج إلى معرفة كيفية عمل الأشياء. شكرًا على الروابط! سألقي نظرة هذا الأسبوع وأرى إلى أي مدى سأصل. ستكون دورة تدريبية رائعة أيضًا! مهاراتي في JS/Ruby ضعيفة الآن. بشكل أساسي Python/Bash وبعض الفتات من لغات أخرى.

هل من الممكن إضافة حقول مخصصة للمنشورات؟ من الناحية المثالية من مُنشئ المنشورات.

ما هو الحد الأدنى لإصدار discourse المطلوب لاستخدام هذا المكون الإضافي؟
(discourse-topic-custom-fields)

هل هذا GitHub - pavilionedu/discourse-group-custom-fields لا يزال محدثًا؟

السبب الذي يجعلني أسأل هو أنني حاولت تطبيق حقل مجموعة مخصص جديد، ولكنه لا يبدو أنه يحفظ/يحتفظ بالقيمة التي أدخلها في حقل الإدخال بعد النقر على حفظ.

إليك الالتزام بجميع التغييرات التي قمت بها والتي (أعتقد) اتبعت هيكل مستودع edu بشكل صحيح: add discord_role_id field to groups · aloha-pk/discourse-discord-sync@fd3eef1 · GitHub

نعم، لقد اختبرته للتو وهو يعمل كما هو متوقع.

{{input type="text" checked=group.custom_fields.discord_role_id}}

مشكلتك هي أنك قمت بتغيير نوع الإدخال إلى text، ولكن تركت إدخال القيمة كـ checked. تحتاج إلى تغيير checked إلى value.

3 إعجابات

حسنًا، هذا سيحل المشكلة :man_facepalming: شكرًا على المساعدة! :smile:

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

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

أي اقتراحات أخرى يا @angus؟

هل قمت بتغيير أي شيء آخر في المثال؟ المثال يعمل. حاول البدء بالمثال نفسه. إذا كان هذا يفشل أيضًا في بيئتك، فهناك شيء آخر يحدث. إذا كان المثال يعمل في بيئتك، فتابع تدريجيًا التغييرات التي أجريتها حتى تجد التغيير الذي يسبب المشكلة.

مرحباً @angus لقد أضفت حقلاً مخصصاً باستخدام هذا المكون الإضافي وهو يعمل بشكل جيد الآن، كيف يمكنني إظهار هذا الحقل في صفحة الفئة أسفل اسم الفئة

إليك كيف يمكنك معرفة ذلك:

  1. ابحث عن القوالب في discourse/discourse التي تعرض صفحة الفئة (ابحث عن عنصر html في الصفحة)

  2. ابحث عن منفذ إضافي في أحد تلك القوالب

  3. استخدم منفذ الإضافات كما هو موضح هنا
    Using Plugin Outlet Connectors from a Theme or Plugin

لقد كتبت هذا الكود ولكنه لا يزال لا يعمل، هل يمكنك إخباري بالمشكلة؟

<script type="text/discourse-plugin" version="0.8">
  const { getOwner } = require("discourse-common/lib/get-owner");
  const { htmlSafe } = require("@ember/string");

  api.decorateWidget("category-heading:after", (helper) => {
    const category = helper.attrs.category;

    if (category.custom_fields?.location) {
      const customLocation = htmlSafe(category.custom_fields.location);
      const template = getOwner(helper).lookup("template:components/category-header");

      return template.fragment.build("custom-location", { customLocation });
    }
  });
</script>

<script type="text/x-handlebars" data-template-name="components/category-header/custom-location">
  <div class="category-custom-location">{{customLocation}}</div>
</script>

ما هو الجزء الذي لا يعمل؟ على سبيل المثال، ماذا ترى عندما تضع console.log(category.custom_fields) هناك؟

لقد قمت بتثبيت هذه الإضافة اليوم بهذا الرمز ويبدو أنها معطلة: GitHub - pavilionedu/discourse-category-custom-fields: Discourse plugin showing how to add custom fields to Discourse categories

يتم تثبيتها باسم “حقول مخصصة لفئة التعليم” ولا توجد معلومات المؤلف هناك:

ماذا تتوقع أن يحدث؟ لا يفترض أن يفعل أي شيء بدون تعديل.

إعجابَين (2)