كيف يمكنني سحب قائمة العلامات للموضوع المفتوح حاليًا؟

مرحباً!

أحاول إنشاء مكون سمة يضيف زرًا مخصصًا للمواضيع الموسومة. على سبيل المثال: المواضيع الموسومة بـ event-tag سيكون لها زر بجوار الفئة يسمى Event والذي سيرتبط بصفحة الفعاليات.

لقد اكتشفت المكان الذي أرغب في إضافة الزر إليه (من خلال منفذ الإضافة topic-category) من خلال هذا الدليل: Developing Discourse Themes & Theme Components

ولدي حاليًا هذا:

<script type="text/x-handlebars" data-template-name="/connectors/topic-category/foobar2">
    <div style="height: 25px; width: 25px;background: red">
      <a href="<events_URL>" target="_blank">Link</a>
    </div>
  </script>

لذا سؤالي هو، كيف يمكنني التحقق من قائمة علامات الموضوع لمعرفة ما إذا كان النص البرمجي أعلاه يجب أن يضيف زرًا أم لا؟

إعجابَين (2)

حسنًا، بعض التقدم:

وجدت أنه إذا استخدمت modifyClass بهذه الطريقة:

<script type="text/discourse-plugin" version="0.8">
    api.modifyClass("component:topic-category", {
      didInsertElement: function() {
        this._super();
        console.log("Welcome to the topics page!")
      }
    });
    </script>

يمكنني الوصول إلى صفحة الموضوع والحصول على استجابة تقول “مرحبًا”، لكنني ما زلت غير متأكد من كيفية سحب علامات الصفحة الحالية لمعرفة ما إذا كان يجب عليّ ملء الزر أم لا.

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

لقد وجدت الحل.

واصلت إعادة قراءة هذا: Developing Discourse Themes & Theme Components

ووجدت أنه إذا قمت فقط بتسجيل console.log(this)، فقد تمكنت من إخراج جميع البيانات الموجودة على الصفحة، بما في ذلك العلامات. أعتقد أنه يمكنني المتابعة من هنا الآن عن طريق سحب بيانات العلامة الموجودة على الصفحة والتحقق مما إذا كانت موجودة في الإعدادات أم لا. بمجرد أن أقوم بتلميع هذا وأعتقد أنه جاهز للجمهور، سأنشره في فئة مكونات السمات. اعتقدت فقط أنني سأشارك اكتشافاتي في حال كان هناك أي شخص آخر يتعلم كيفية إنشاء مكونات السمات!

3 إعجابات

للعلم فقط، سيكون رمز الحصول على قائمة العلامات في هذا السياق هو:


    api.modifyClass("component:topic-category", {
      pluginId: "returnTags",
      didInsertElement: function() {
        this._super();
        console.log(this.topic.tags)
      }
    });

يعيد:

:information_source: (مطلوب pluginId لتجنب التحذير)

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