ربما توجد عدة طرق لمعالجة هذه المشكلة، لكن دعنا نجرب الطريقة “الصحيحة” باستخدام أدوات التخصيص المناسبة.
عند إضافة HTML إلى قسم التذييل في سمة ما، يقوم Discourse ببعض المعالجة لذلك لمنع القفز بين انتقالات الصفحات أو عند إضافة عناصر إضافية مع التمرير اللانهائي.
يتم إضافته كمكون custom-html هنا.
إذا نظرت إلى كود المكون، ستلاحظ أنه يُطلق حدث تطبيق عند عرضه.
هذه هي الأداة التي تحتاج إلى استخدامها.
كيف تستخدمها؟
توجد طريقة في plugin-api تتيح لك تشغيل كود عند إطلاق حدث تطبيق محدد.
وبما أننا نعرف بالفعل اسم الحدث، يمكننا استخدامه كما يلي:
api.onAppEvent("inserted-custom-html:footer", () => {
// قم بعملك هنا
});
وبما أن هذه طريقة خاصة بـ plugin-API، يجب عليك تغيير نوع وسم السكربت إلى text/discourse-plugin كما يلي:
<script type="text/discourse-plugin" version="0.8">
api.onAppEvent("inserted-custom-html:footer", () => {
// قم بعملك هنا
});
</script>
ستعمل المقطع أعلاه دائمًا عند عرض التذييل. لذا، يمكنك الآن القيام بشيء مثل هذا:
<script type="text/discourse-plugin" version="0.8">
api.onAppEvent("inserted-custom-html:footer", () => {
$(".footer-div #footerNavDiv").click(function () {
console.log("تم التقاط حدث النقر");
// قم بعملك هنا لحدث النقر
});
});
</script>
يمكنك قراءة المزيد حول plugin-API هنا