أصبح استخدام <script type='text/discourse-plugin'> أو <script type='text/x-handlebars'> في الثيمات الآن مُهملًا. يجب تحديث أي استخدام لهذه العلامات في الثيمات وفقًا للتعليمات أدناه.
لا يتأثر هذا التغيير بعلامات <script> العادية و <script type='text/javascript'>.
الجدول الزمني
هذه تقديرات تقريبية، قابلة للتغيير
-
مايو 2025 - تمكين رسائل إهمال وحدة التحكم (console deprecation messages)
-
يوليو 2025 - تمكين لافتات التحذير للمسؤول (admin warning banners)
-
أواخر سبتمبر 2025مارس 2026 - إزالة الميزة
تحويل <script type='text/x-handlebars'>
يجب نقل القوالب المُقدمة باستخدام هذه الطريقة إلى ملفات .hbs مخصصة، أو إعادة هيكلتها إلى ملفات gjs.
للاحتفاظ بصيغة HBS، يمكن وضع قوالب الموصلات (connector templates) في:
{theme}/javascripts/discourse/connectors/{outlet-name}/{connector-name}.hbs
ويمكن وضع قوالب المكونات (component templates) في:
{theme}/javascripts/discourse/components/{component-name}.hbs
اعتبارًا من مارس 2026، أصبحت ملفات
.hbsمُهملة أيضًا. بعد إجراء هذا التحويل، انتقل إلى التعليمات الموجودة في Deprecating .hbs file extension in themes and plugins
لبناء الموصلات والمكونات بتنسيق .gjs الحديث، راجع هذا الفصل من دليل مطوري الثيمات:
تحويل <script type='text/discourse-plugin'>
يمكن ترحيل الشيفرة الموجودة داخل هذه العلامات إلى ملف JavaScript مخصص.
إذا كنت تطور الثيم الخاص بك عبر واجهة لوحة الإدارة، فانسخ الشيفرة من علامة <script>، وانقلها إلى علامة تبويب 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:


