إنشاء شارة مخصصة بقواعد مخصصة

أرغب في إنشاء شارة مخصصة تُضاف إليها هذه القواعد، مما يعني ببساطة أنه عندما يحقق المستخدم الأشياء الموضحة أدناه، فسيتم منحه الشارة ذات الصلة تلقائيًا.
يحتاج المستخدمون إلى تحقيق الأشياء/القواعد التالية:

  1. يجب أن يكون المستخدم قد أنشأ منشورين على الأقل.
  2. يجب أن يكون المستخدم قد قام بتحميل صورة للملف الشخصي.
  3. يجب أن يكون المستخدم قد أعجب بمنشور واحد على الأقل.

ملاحظة - لقد رأيت بعض إنشاءات الشارات بمساعدة استعلامات SQL، في الواقع أنا جديد جدًا في هذا الأمر لذا يرجى إخباري بمكان وضع استعلامات SQL (إذا لزم الأمر) لتحقيق هذه القواعد المذكورة أعلاه.

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

هل يمكن أن يساعد؟

4 إعجابات

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

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

  1. كيف يمكنني عرض قاعدة البيانات، حتى أتمكن من بناء استعلامي الخاص
  2. كيف يمكنني اختبار هذه الشارات بعد بناء الاستعلامات.

يرجى الإجابة على هذين الأمرين بعد ذلك يمكنني النوم بسلام.

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

أسهل طريقة هي تثبيت إضافة discourse-data-explorer، والتي ستوفر واجهة كهذه.

3 إعجابات

لقد قمت بتثبيت المكون الإضافي وأجريت أمر SQL التالي الذي يعطيني المستخدمين الذين يستوفون هذه القواعد الثلاثة ولكني لا أعرف كيفية تحويله إلى مشغل عندما يتصرف مستخدم على المنشور.

أمر SQL -
select users.username, user_stats.user_id from user_stats Inner Join users ON user_stats.user_id = users.id where post_count = 2 AND likes_given = 1 AND uploaded_avatar_id > 0

أتبع هذا المنشور Creating triggered custom badge queries ولكنني ما زلت غير قادر على الإنشاء لأنني جديد حقًا في discourse.

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

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

هذا هو كود SQL لـ “المشغل: تحديث يومي”؛

SELECT st.user_id user_id, current_timestamp granted_at
FROM user_stats st
JOIN users u
ON st.user_id = u.id
WHERE st.post_count >= 2 AND st.likes_given >= 1 AND u.uploaded_avatar_id > 0

المشغلات الأخرى تعتمد على شيء محدد، ولا أوصي باستخدامها إلا إذا وجدت خبيرًا في SQL. (أنا لست على دراية بـ SQL بنفسي)

3 إعجابات

شكراً جزيلاً على هذا، لدي فقط ثلاثة أسئلة أساسية -

  1. ما هي st و u table وما هي فائدة كلتا هاتين الجدولين ولماذا لا تظهر هاتان الجدولان في علامة تبويب مستكشف المكونات الإضافية؟

  2. متى سيتم تشغيل هذا التحديث اليومي للمشغل، على وجه التحديد أسأل عن الوقت.

  3. ما فائدة تشغيل استعلام الإلغاء يوميًا؟

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

فيما يتعلق بـ 1؟، هذه أسماء مستعارة للجداول.

هل ترى السطر FROM user_stats st؟ هذا يخبر الاستعلام أن st هو اختصار لجدول user_stats.

وينطبق الشيء نفسه على عبارة JOIN حيث تقول users u. إنها تقول إنه في الاستعلام u هو اسم مستعار لجدول users في هذا الاستعلام. تُستخدم الأسماء المستعارة للسماح بتبسيط الاستعلامات لاستخدام كتابة أقل مما يقلل من احتمالية حدوث أخطاء.

فيما يتعلق بـ 3، إذا قمت بتمكين هذا الخيار، فعندما لم يعد المستخدم مؤهلاً للشارة بناءً على الاستعلام، فسيؤدي ذلك إلى إزالة الشارة من حسابه.

3 إعجابات

شكراً لتوضيح استفساراتي، الآن النقطة الثانية فقط متبقية

  1. متى سيتم تشغيل هذا التحديث اليومي للمشغل، على وجه التحديد أسأل عن الوقت.

عذرًا. اعتقدت أنني أجبت على ذلك.

يتم تشغيل الاستعلام كل 24 ساعة بناءً على الوقت الذي بدأت فيه الحاوية. لذلك لدي مثيل واحد يقوم بتشغيله حوالي الساعة 0:00 بالتوقيت العالمي المنسق (تقريبًا) ومثيل آخر يقوم بتشغيله بعد الساعة 6:00 بالتوقيت العالمي المنسق بقليل.

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