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 ?
[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 nom template, 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
Points clés qui m’ont posé problème en cours de route :
Dans les modèles, ni les expressions JavaScript arbitraires (telles que les appels de fonction) ni les expressions de filtre (de la forme some-transormation-function someVariableOrLiteral) ne fonctionnent entre doubles accolades. Seules les variables uniques peuvent y être interpolées.
Pour l’un des deux actifs, j’avais oublié d’inclure le nom du répertoire assets/ dans la valeur du chemin de fichier correspondante dans about.json. Cela échouait silencieusement, ce qui faisait que le paramètre correspondant était undefined, ce qui, je suppose, a provoqué l’omission silencieuse du modèle entier ou quelque chose du genre.
À un moment donné pendant le développement, le composant de thème synchronisé par discourse_theme watch ... n’avait aucun effet, que ce soit en aperçu ou explicitement activé. Laisser discourse_theme watch ... créer une nouvelle copie du composant sur l’instance (et supprimer la copie précédente) a corrigé cela. Je ne sais pas exactement ce qui s’est passé là-bas.
Avez-vous vérifié la console du navigateur ? Les erreurs dans votre composant y sont signalées, et s’il y a des erreurs, votre composant ne s’affichera pas (ou ne s’affichera pas complètement).