Include assets (e.g. images, fonts) in themes and components semble toujours se référer à la manière Handlebars de procéder, si je comprends bien. La nouvelle méthode Glimmer est-elle déjà disponible pour rendre utilisables les images du répertoire assets du composant de thème dans un HTML(-template) du même composant de thème ?
Mon cas d’utilisation est de remplacer le composant de thème hérité maintenant cassé décrit dans Templating of my "component" broke. How do I fix it?.
Ce que j'ai essayé
J’ai généré un nouveau projet de composant de thème avec discourse_theme new discourse-tc-geowebforum-sponsors puis j’ai essayé de répliquer le plugin précédent sans la logique conditionnelle et avec un template en ligne, mais cela a conduit à
[THEME 6 'geowebforum-sponsors'] Error: [THEME 6 'geowebforum-sponsors'] Compile error: SyntaxError: /theme-6/discourse/api-initializers/geowebforum-sponsors.gjs: Attempted to resolve a helper in a strict mode template, but that value was not in scope: theme-relative-url:
dans la console du navigateur.
J’ai également essayé diverses combinaisons de :
- extraire le template dans une constante
- accolades simples (au lieu de doubles)
- utiliser un appel de fonction (
themeRelativeUrl("asseco_berit.jpg")) entre les accolades - déplacer le template vers
javascripts/discourse/components/geowebforum-sponsors.gjs(et l’importer depuis l’initialiseur) - déplacer le template vers
javascripts/components/geowebforum-sponsors.gjs(et l’importer depuis l’initialiseur) - introduire une
class GEOWebforumSponsorsComponent extends Component {}dans ce fichier et l’importer dans l’initialiseur (tout en exportant le template du même fichier que la classe sous le nomtemplate, comme un LLM me l’avait suggéré – je ne sais toujours pas si cela aurait un sens.)
J’ai obtenu soit
- la même erreur (bien que provenant de cet autre fichier)
soit klass is not an Ember component
soit- des espaces réservés de template littéraux dans le DOM résultant, entraînant naturellement des 404 pour les sources d’images