لديّ شيء ما شابه هذا في علامة التبويب الخاصة بـ JavaScript في قالب موضوعي:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("0.11.1", (api) => {
api.renderInOutlet("above-main-container",
<template>
<div>
html stuff
</div>
</template>
);
});
لقد قمت بنسخ ولصق هذا الكود، ويعمل (وهو مجرد مثال)
كيف يمكنني جعل هذا الكود يُعرض فقط في الصفحة الرئيسية أو فقط في صفحة التصنيفات؟
عذراً إذا لم تكن هذه أسئلة جيدة
هذا سؤال جيد، لا تقلق بشأنه! سيعمل هذا:
import Component from "@glimmer/component";
import { service } from "@ember/service";
import { apiInitializer } from "discourse/lib/api";
import { defaultHomepage } from "discourse/lib/utilities";
class HomepageOnly extends Component {
@service router;
get shouldShow() {
return this.router.currentRouteName === `discovery.${defaultHomepage()}`;
}
<template>
{{#if this.shouldShow}}
<div>
html stuff
</div>
{{/if}}
</template>
}
export default apiInitializer((api) => {
api.renderInOutlet("above-main-container", HomepageOnly);
});
يؤدي هذا إلى إنشاء مكون جديد، يستخدم خدمة router وأداة defaultHomepage للتحقق مما إذا كنت على الصفحة الرئيسية. ثم يتم عرض المكون في منفذ الإخراج.
هناك المزيد من التفاصيل هنا: Add custom content that only appears on your homepage
شكراً لك يا كريس، لقد عملت بشكل مثالي. شكراً أيضاً على الرابط، أحاول التعلم.