-
Notifications
You must be signed in to change notification settings - Fork 104
Seitensteuerung und Importieren von Widgets
Die Twig Template Engine unterstützt in v1.x noch das Importieren von Templates in den "Elternseiten", so dass dies auch auf den "Kinderseiten" verwendet werden können. Da Twig v1.x aktuell (Stand Januar 2021) weiter gepflegt wird, besteht keine Notwendigkeit, auf höhere Versionen umzusteigen, bei denen das nicht mehr möglich ist.
Der User braucht sich in der Regel nicht darum zu kümmern, wo Widgets gespeichert sind, weil smartVISU diese selbständig sucht:
-
in der index.php wird der Twig-FileSystemLoader definiert, in dem die üblichen Pfade angelelegt werden, in denen die Template Engine Dateien sucht. Aktuell sind das die Verzeichnisse
- ./pages/
- ./pages//widgets
- ./pages/smarthome (sofern dieses existiert)
- ./pages/base
- ./widgets
- ./apps
- ./dropins
- ./dropins/widgets Dateien, die für extends, include oder import gesucht werden, sucht Twig automatisch in diesen Verzeichnissen.
-
In den regulären Visu-Seiten wird i.d.R. die base.html eingebunden, die die Seitenaufteilung für Seitenmenü und Visuseite macht (alternativ die full.html, die eine Visuseite ohne Seitenmenü aufbaut). Beide erweitern die root.html, in der die wesentlichen Vorbereitungen für den Seitenaufbau vorgenommen werden:
- es werden alle html-Dateien importiert, die in ./dropins/widgets und ./pages//widgets gefunden werden.
- es werden alle css.Dateien importiert, die in ./dropins, ./dropins/widgets, ./pages//widgets und ./pages//css gefunden werden
- es werden alle js-Dateien importiert, die in ./dropins, ./dropins/widgets, ./pages//widgets und ./pages//js gefunden werden
- zusätzlich werden alle fest zu smartVISU gehörenden Bibliotheken und Widgets (html, css und js) importiert
- danach werden Initialisierungen vorgenommen und der io-Treiber gestartet.
-
Während für die regulären Visu-Seiten alle benötigten Module automatisch importiert werden, muss man in eigenen Widgets die verwendeten smartVISU-Widgets selbst importieren. Das geht i.d.R. ohne Pfadangaben (s. Punkt 1). Zudem kann man mit der Twig-Funktion asset_exists() prüfen, ob eine Datei vorhanden ist:
{% if asset_exists('mywidget.html' %} {% import 'mywidget.html' as mywidget %} {% endif %}
Die Funktion sucht in ./widgets, ./dropins, ./dropins/widgets und ./pages//widgets. Sinnvoll ist dies, wenn man Widgets verwendet, die auch ohne die importierten Widgets auskommen (Beispiel: quad.html kann stateengine.html optional importieren).