Struktur
Jedes Twig-Template, das hostware rendert, stammt aus einer von drei Quellen: dem zentralen Storefront, einem aktiven Modul oder dem aktuellen Theme des Vertriebskanals. Jede Quelle hat einen Namespace. Über den Namespace sprichst du ein Template an, und das Framework entscheidet damit, welche Version gewinnt, wenn mehrere vorhanden sind.
hostware baut sein Storefront auf der Twig-Engine auf, daher ist jedes von dir geschriebene Override eine normale Twig-Datei. Das Besondere ist, dass hostware alle drei Quellen transparent für dich durchsucht und zusammenführt.
Namespaces
Ein Namespace ist der Teil eines Template-Pfads vor ::. Er beantwortet die Frage: „Welches Projekt besitzt diese Datei?“ Du verwendest einen Namespace immer dann, wenn du ein Template erweiterst oder einbindest.
storefront::
Die zentralen hostware-Templates. Jedes Basislayout, jede Seite und jede Komponente im Shop befindet sich hier. Themes und Module erweitern Dateien unter diesem Namespace, um das Aussehen oder Verhalten des Storefronts zu ändern. Beispiele: storefront::home.twig, storefront::component/product/card.twig.
<modulename>::
Templates, die von einem Modul bereitgestellt werden. Der Namespace entspricht dem Verzeichnisnamen des Moduls in Kleinbuchstaben. Das Modul DashservVps stellt seine Templates beispielsweise als dashservvps::path/to/template.twig bereit. Verwende diesen Namespace, um Dateien zu referenzieren oder zu erweitern, die von einem anderen Modul bereitgestellt werden.
theme.<name>::
Templates, die zum eigenen resources/views/-Verzeichnis eines Themes gehören. Themes erhalten das Präfix theme., damit ihr Namespace niemals mit einem gleichnamigen Modul kollidiert. Das Theme evolution stellt interne Partials beispielsweise als theme.evolution::cms/elements/components/evo_feature_box_item bereit. Du benötigst diesen Namespace hauptsächlich dann, wenn ein Theme aus einer anderen Theme-Datei auf eigene Partials verweist.
Wo ein Theme auf der Festplatte liegt
Themes sind Ordner unter custom/themes/<vendor>/<name>. Alles innerhalb von resources/views/ folgt derselben relativen Pfadstruktur wie das zentrale Storefront. Daher überschreibt ein Theme-Template unter resources/views/storefront/home.twig das Template storefront::home.twig. Lies Ein neues Theme erstellen, um mehr über die Verzeichnisstruktur und den Aktivierungsablauf zu erfahren.
hw_extends und hw_include
Zwei Twig-Tags steuern das Override-System. Beide durchlaufen dieselbe Kette aus drei Quellen (Theme, aktive Module, zentraler Kern), verhalten sich aber unterschiedlich, sobald sie ein Template gefunden haben.
{% hw_extends 'storefront::home.twig' %}verwendet das gefundene Template als übergeordnetes Template, sodass du dessen Blöcke überschreiben kannst. Verwende dies, um Teile einer Seite zu ändern.{% hw_include 'storefront::component/product/card.twig' %}fügt das gefundene Template inline ein. Verwende dies, um ein Partial wiederzuverwenden. Da dasselbe Quellenkette durchlaufen wird, wird der Ersatz einer Komponente durch ein Theme überall berücksichtigt, wo sie eingebunden wird.
Beide Tags erfordern die Namespace-Form (storefront::path), niemals einen einfachen Pfad. Ohne Namespace weist der Template-Resolver den Aufruf zurück.
Was du als Nächstes lesen solltest
Siehe Reihenfolge der Template-Erweiterungen für den genauen Baum, den hostware erstellt, sowie die Priorität Theme, dann Modul, dann zentraler Kern. Siehe Eine Template-Datei erweitern für das Block-für-Block-Override-Muster, das du in der Praxis verwendest.