استخدام \u003cscript type='text/discourse-plugin\u003e أو \u003cscript type='text/x-handlebars'\u003e في السمات أصبح مهجورًا. يجب تحديث أي استخدام لهذه العلامات في السمات وفقًا للتعليمات أدناه.
علامات \u003cscript\u003e و \u003cscript type='text/javascript'\u003e العادية غير متأثرة بهذا التغيير.
الجدول الزمني
هذه تقديرات تقريبية، قابلة للتغيير
-
مايو 2025 - تمكين رسائل التحذير في وحدة التحكم
-
يوليو 2025 - تمكين لافتات التحذير للمسؤولين
-
أواخر سبتمبر 2025 - إزالة الميزة
تحويل \u003cscript type='text/x-handlebars'\u003e
يجب نقل القوالب التي تم تقديمها باستخدام هذه الطريقة إلى ملفات .hbs مخصصة، أو إعادة هيكلتها إلى ملفات gjs.
للاحتفاظ بها كـ HBS، يمكن وضع قوالب الموصلات في:
{theme}/javascripts/discourse/connectors/{outlet-name}/{connector-name}.hbs
ويمكن وضع قوالب المكونات في:
{theme}/javascripts/discourse/components/{component-name}.hbs
لبناء الموصلات والمكونات بتنسيق .gjs الحديث، تحقق من هذا الفصل من دليل مطور السمات:
تحويل \u003cscript type='text/discourse-plugin'\u003e
يمكن ترحيل التعليمات البرمجية داخل هذه العلامات إلى ملف JavaScript مخصص.
إذا كنت تطور السمة الخاصة بك عبر واجهة لوحة المسؤول، فانسخ التعليمات البرمجية من \u003cscript\u003e، وانقلها إلى علامة التبويب JS (حيث مكتوب // your code here).
إذا كنت تطور السمة الخاصة بك محليًا، فأنشئ ملفًا جديدًا في
{theme}/javascripts/discourse/api-initializers/init-theme.js
ثم أضف هذا الغلاف، وضع التعليمات البرمجية الخاصة بك في المكان المحدد:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
// Your code here
});
في علامات النص البرمجي، كانت الطريقة الوحيدة لاستيراد وحدات JS أخرى هي استخدام صيغة require(). بينما سيظل هذا يعمل في ملف .js، إلا أنه سيتم إهماله قريبًا، لذا سيكون هذا وقتًا جيدًا لتحويله إلى استيرادات ES6 الحديثة. على سبيل المثال:
- const I18n = require("discourse-i18n").default;
+ import I18n from "discourse-i18n";
- const { h } = require("virtual-dom");
+ import { h } from "virtual-dom";
لمزيد من المعلومات حول تهيئة JS:


