Nach etwas Recherche im Internet wie man mit Twig eine .svg-Datei in inline <svg> umwandelt, habe ich mich daran versucht eine Template-Variante für Image zu erstellen.
Im Beispiel wurde
PHP-Code:
{{ source(pathToFile.svg) }}
verwendet, dachte ich mir "Kein Problem, hau ich easy in mein template rein, done.".
Hierfür wollte ich die _picture Komponente bearbeiten.
Testweise erstmal die line gesetzt im image Block, schauen ob alles so funktioniert wie ich mir das vorstelle.
Direkt mal nicht geklappt, schmeißt diese Fehlermeldung:
Code:
Uncaught PHP Exception Twig\Error\LoaderError: "Template "/files/img/xxx/xxx.svg" is not defined."
Hier der Block aus meinem Template. Nach "set img" kommt noch etwas code für proportions und img_attributes, ist allerdings irrelevant für das hier.
PHP-Code:
{% block image %}
{% set img = figure.image.img %}
...
{{ source(img.src) }}
{% endblock %}
Was mich etwas stutzig macht ist das die Fehlermeldung "Template" sagt.
In den Beispielen die ich gesehen habe hat source() ohne Probleme für .svg-Dateien funktioniert.
Davon abgesehen, meine Vermutung ist, dass der angegebene Pfad im Template-Verzeichnis startet, da so Twig für Contao ausgelegt scheint.
Jetzt habe ich gesucht, ob es denn für Contao ein Namespace gibt, dass mich auf den /files Ordner zugreifen lässt, allerdings habe ich diesbezüglich nichts gefunden.
Von was ich gesehen habe scheinen alle Namespaces exklusiv für Template-Verzeichnisse zu sein.
Hat Jemand einen Ratschlag wie ich das lösen kann?
Ich suche nach einer eleganten Lösung die pur auf Template-Dateien basiert, damit ich die ganz einfach wiederverwenden kann für andere Projekte.
Höre mir aber auch gerne andere Ideen an!
Lesezeichen