Include assets (e.g. images, fonts) in themes and components sembra fare ancora riferimento al modo Handlebars di fare le cose, se ho capito bene. Il nuovo modo Glimmer è già disponibile per rendere utilizzabili le immagini dalla directory assets del componente tema in un HTML(-template) dello stesso componente tema?
Il mio caso d’uso è sostituire il componente tema legacy ora non funzionante descritto in Templating of my "component" broke. How do I fix it?.
Cosa ho provato
Ho generato un nuovo progetto di componente tema con discourse_theme new discourse-tc-geowebforum-sponsors e poi ho provato a replicare il plugin precedente senza la logica condizionale e con un template inline, ma ciò ha portato a
[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:
nella console del browser.
Ho anche provato varie combinazioni di:
- estrarre il template in una costante
- doppie parentesi graffe singole (invece di)
- usare una chiamata di funzione (
themeRelativeUrl("asseco_berit.jpg")) all’interno delle parentesi graffe - spostare il template in
javascripts/discourse/components/geowebforum-sponsors.gjs(e importarlo dall’initializer) - spostare il template in
javascripts/components/geowebforum-sponsors.gjs(e importarlo dall’initializer) - introdurre una
class GEOWebforumSponsorsComponent extends Component {}in quel file e importarla nell’initializer (esportando contemporaneamente il template dallo stesso file come classe sotto il nometemplate, come un LLM mi aveva suggerito – sono ancora incerto se avrebbe avuto senso.)
Ho ottenuto o
- lo stesso errore (sebbene da quell’altro file)
o klass is not an Ember component
o- segnaposto di template letterali nel DOM risultante, che naturalmente portano a 404 per le sorgenti delle immagini