Wie verwende ich Bilder aus Assets in HTML einer Glimmer-basierten Theme-Komponente?

Include assets (e.g. images, fonts) in themes and components scheint sich, wenn ich es richtig verstehe, immer noch auf den Handlebars-Weg zu beziehen. Ist der neue Glimmer-Weg bereits verfügbar, um Bilder aus dem assets-Verzeichnis der Themenkomponente in einer HTML(-Vorlage) derselben Themenkomponente nutzbar zu machen?

Mein Anwendungsfall ist der Ersatz der jetzt defekten Legacy-Themenkomponente, die unter Templating of my "component" broke. How do I fix it? beschrieben wird.

Was ich versucht habe

Ich habe ein neues Themenkomponentenprojekt mit discourse_theme new discourse-tc-geowebforum-sponsors generiert und dann versucht, das vorherige Plugin ohne die bedingte Logik und mit einer Inline-Vorlage zu replizieren, was jedoch zu Folgendem führte:

[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: 

in der Browserkonsole.

Ich habe auch verschiedene Kombinationen ausprobiert:

  • Die Vorlage in eine Konstante auslagern
  • Einfache (anstelle von doppelten) geschweifte Klammern
  • Einen Funktionsaufruf (themeRelativeUrl("asseco_berit.jpg")) innerhalb der geschweiften Klammern verwenden
  • Die Vorlage nach javascripts/discourse/components/geowebforum-sponsors.gjs verschieben (und sie aus dem Initialisierer importieren)
  • Die Vorlage nach javascripts/components/geowebforum-sponsors.gjs verschieben (und sie aus dem Initialisierer importieren)
  • Eine class GEOWebforumSponsorsComponent extends Component {} in dieser Datei einführen und diese im Initialisierer importieren (während die Vorlage unter dem Namen template aus derselben Datei wie die Klasse exportiert wird, wie eine LLM mir vorgeschlagen hat – ich bin mir immer noch nicht sicher, ob das irgendeinen Sinn ergeben würde.)

Ich erhielt entweder:

  • denselben Fehler (wenn auch aus dieser anderen Datei)
    oder
  • klass is not an Ember component
    oder
  • wörtliche Vorlagenplatzhalter im resultierenden DOM, was natürlich zu 404-Fehlern für die Bildquellen führte.
2 „Gefällt mir“

Hmm, hast du diesen Teil gesehen?