Einsatz von SVG-Dateien
Die »SVG-Datei«
Die Nutzung von Dateien im SVG-Format bietet zahlreiche Vorteile. Als reines Vektorformat werden diese, im Gegensatz zu anderen Formaten, verlustfrei skaliert. Häufig werden SVG-Dateien daher zur Darstellung eines Logos oder von Symbolen eingesetzt.
Du möchtest deine SVG-Datei in Contao einsetzen?
Für unser Beispiel verwenden wir das Contao-Logo im SVG-Format (contao.svg):
Kopiere die SVG-Datei hierzu in ein als »Öffentlich« gekennzeichnetes Verzeichnis unterhalb von »files«. Genau wie bei anderen Bild-Formaten wird dir innerhalb der Dateiverwaltung eine Vorschau angezeigt.
Anschließend kannst du die SVG-Datei u. a. im Inhaltselement vom Typ “Bild” auswählen. Optional können hier auch die Einstellungen für die »Bildgröße«, analog zu anderen Bild-Formaten, festgelegt werden. Contao erstellt folgenden Quelltext:
Mit unterschiedlichen Einstellungen der »Bildgröße«
erhalten wir folgende Darstellung(en) über das »img« HTML-Element:
Die »inline« Alternative
Die Einbindung von SVG-Dateien über das HTML-Element »img« ist eine Variante. Weitere Möglichkeiten ergeben sich,
wenn du die SVG-Datei »inline« einsetzt. Der Inhalt der SVG-Datei »<svg>...</svg>« wird dabei direkt im
HTML-Quelltext hinterlegt. In dieser Form kannst du dann die Darstellung mit CSS-Angaben beeinflussen.
Zur Umsetzung benutzen wir ein Template zusammen mit dem
Insert-Tag {{file::*}}. Erstelle dir ein neues
Template »mysvgicon.html5« im Verzeichnis »mysvgfolder« unterhalb des Verzeichnis »Templates« und kopiere den vollständigen
SVG-Code in die Template-Datei.
Anschließend kannst du die Datei in einem Inhaltselement über das
Insert-Tag {{file::mysvgfolder/mysvgicon.html5}} einbinden und mit CSS-Angaben kontrollieren. Die Ausgabe
bei Nutzung innerhalb des Inhaltslements vom Typ »Text« (verkürzt):
Tipp
Im Gegensatz zu den Contao eigenen Template-Dateien kannst du hierbei diese Dateien in beliebig verschachtelte Verzeichnisse unterhalb von »Templates« legen. Die relativen Pfadangaben definierst du im Insert-Tag.
SVG über CSS kolorieren
Du könntest unser Beispiel mit der CSS-Angabe »svg { fill: #ff0000; }« einfärben. Allerdings möchten wir lieber
die CSS-Eigenschaft color verwenden. Hierzu ergänzen wir den SVG-Code im Template mit der Eigenschaft fill
und dem Wert currentColor:
In deinen CSS-Angaben könnest du jetzt folgendes verwenden:
Das Schlüsselwort currentColor folgt dabei der CSS-Kaskade. Daher übernimmt unser SVG-Symbol den Farbwert des übergeordneten »div« Blocks mit der CSS-KLasse »ce_text«. Wenn du gezielt das SVG-Symbol ändern möchtest:
Das »{{file::*}}« Insert-Tag mit Argument
Mit CSS kannst du deine »inline« verwendeten SVG-Dateien farblich gestalten. Möchtest du ohne weitere CSS Anpassungen gezielt eine SVG-Datei über das Inhaltselement ändern?
Das Insert-Tag {{file::*}} unterstützt die Übergabe von
Argumenten. Du kannst hierüber z. B. den Farbwert definieren:
{{file::mysvgfolder/mysvgicon.html5?color=#ff0000}}
In der Template Datei ersetzen wir den Wert der Eigenschaft fill mit einer PHP-Abfrage. Wird ein übergebenes Argument
gefunden wird dieses eingetragen, ansonsten bleibt es beim Schlüsselwort currentColor. Deine CSS-Angaben werden
hiermit im entsprechenden Inhaltselement gezielt überschrieben.