Tengo algo como esto en la pestaña JS de mi tema:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("0.11.1", (api) => {
api.renderInOutlet("above-main-container",
<template>
<div>
cosas de html
</div>
</template>
);
});
Lo copié y pegué, funciona (es solo un ejemplo)
¿Cómo hago para que esto se renderice solo en la página de inicio o solo en la página de categorías?
perdón si esta no es una buena pregunta
Es una buena pregunta, ¡no te preocupes! Esto funcionará:
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>
cosas de html
</div>
{{/if}}
</template>
}
export default apiInitializer((api) => {
api.renderInOutlet("above-main-container", HomepageOnly);
});
Esto crea un nuevo componente que utiliza el servicio router y la utilidad defaultHomepage para verificar si estás en la página de inicio. Luego, el componente se representa en el outlet.
Hay un poco más de información aquí: Add custom content that only appears on your homepage
Gracias, Kris, funciona perfectamente. También gracias por el enlace, estoy intentando aprender.