إليك بعض النقاط الهامة:
-
تم نقل إعدادات الموقع إلى خدمة:
const siteSettings = container.lookup('service:site-settings'); if (!siteSettings.docuss_enabled) { return; } -
location:discourse-location→location:history -
afterRender().then(() => onAfterRender(container));
afterRenderهو مُزين تضعه فوق دالة في فئة المكون؛ لا يُفترض استخدامه مباشرة كدالة.
أعتقد أنك تريد (لا يبدو أنه ضروري)، ربما:import { schedule } from '@ember/runloop'; schedule("afterRender", () => onAfterRender(container)) -
لديك جزء كبير من التعليمات البرمجية خارج دالة
composeStateChanged، على ما يبدو.
أيضًا، يمكنك استخدام خدمة الموجه هنا:container.lookup('router:main').transitionTo(path);→this.router.transitionTo(path); -
تم تحديث الواجهة الأمامية. تخصيص في أداة
home-logoمهمل في سياقك. مزيد من المعلومات هنا: Upcoming Header Changes - Preparing Themes and Plugins.
في حالتك، ستحتاج إلى إعدادglimmer header modeإلىautoأوenabled. بعد ذلك، يمكنك استخدام منفذ إضافة لاستبدال المحتوى:api.renderInOutlet("home-logo-contents", `<template> <HomeLogoContents @logoSmallUrl={{container.dcsHeaderLogo._smallLogoUrl}} @logoUrl={{container.dcsHeaderLogo._logoUrl}} @minimized={{@outletArgs.minimized}} @mobileLogoUrl={{container.dcsHeaderLogo._mobileLogoUrl}} @showMobileLogo={{@outletArgs.showMobileLogo}} @title={{@outletArgs.title}} /> </template>`);ملاحظة: لاستخدام صيغة
templateفي glimmer، تأكد من تغيير امتداد الملف إلى.gjs.
يمكنك أيضًا استخدام هذه الطريقة:api.registerValueTransformer("home-logo-image-url", (transformer) => { let url = transformer.value; if (transformer.context.name === 'logo') { url = container.dcsHeaderLogo._logoUrl; } else if (transformer.context.name === 'logo_small') { url = container.dcsHeaderLogo._smallLogoUrl; } else if (transformer.context.name === 'logo_mobile') { url = container.dcsHeaderLogo._mobileLogoUrl; } return url; });لتغيير عنوان URL:
api.registerValueTransformer("home-logo-href", () => container.dcsHeaderLogo._href);ملاحظة: أعتقد أن التعليمات البرمجية لإعادة التصيير في
setLogoلن تعمل على مكون glimmer.ملاحظة بعد الاختبار: ومع ذلك، لن تعمل أي من الحلين لأن الواجهة الأمامية يتم تصييرها قبل أن تتمكن من الحصول على الشعارات من JSON. ليس لدي حل جاهز لذلك. لست متأكدًا مما إذا كانت هناك طريقة أفضل: سأنقل تحميل JSON إلى خدمة وأتتبع النتيجة. ثم، استخدم منفذ الإضافة أعلاه مع مكون glimmer. بهذه الطريقة، بناءً على متغير تتبع، يمكنك تشغيل تحديث على المكون تلقائيًا.
مع ذلك، يعمل الأمر بطريقة ما. لا تزال هناك أجزاء غير عاملة مثل المنشئ. لم أتعمق في هذا. على الأقل، لم يعد هناك خطأ مانع.

آمل أن يكون هذا مفيدًا.