Markus Michalski FAQ

Warenkorb- & Checkout-Attribute: Storefront

Twig Hooks des Plugins in Warenkorb, Checkout-Sidebar und Bestellübersicht, Wiederverwendung der Attribut-Partials und Spalten-Unterdrückung.

English Version

Zurück zur Übersicht

Warenkorb- & Checkout-Attribute: Storefront

Twig Hooks

Das Plugin überschreibt keine Core-Templates, sondern hängt sich über Twig Hooks in bestehende Hook-Punkte ein:

Hook-Punkt Ort Priorität
sylius_shop.cart.index.content.form.sections.general.items.head Warenkorb-Tabellenkopf 250
sylius_shop.cart.index.content.form.sections.general.items.body Warenkorb-Tabellenzelle 250
sylius_shop.checkout.common.sidebar.summary.items.item Checkout-Sidebar, pro Position (Adresse-, Versand-, Zahlungsschritt) 150
sylius_shop.shared.order.show.summary.table.header Bestellübersicht-Tabellenkopf 250
sylius_shop.shared.order.show.summary.table.body Bestellübersicht-Tabellenzelle 250

Für die Checkout-Sidebar existiert in Sylius kein eigener Kopf-Hookpunkt, nur der Punkt pro Position.

Die letzten beiden Hooks werden wiederverwendet: Dieselbe Tabelle rendert sowohl die Bestellbestätigung nach dem Checkout als auch die Konto-Bestellhistorie, jeweils über die _prefixes-Zusammenführung der jeweiligen Seite.

Wiederverwendung der Attribut-Partials

Die Werte werden nicht selbst formatiert, sondern über Sylius' eigene @SyliusAttribute/Types/*.html.twig-Partials gerendert (mit @SyliusAttribute/Types/default.html.twig als Fallback) - dieselben Partials, die auch die Produktseite verwendet. Checkbox-, Datums-, Prozent- und Auswahlwerte sehen dadurch exakt so aus wie dort, ohne eigene Formatierungslogik im Plugin.

Spalten-Unterdrückung

Jedes der fünf Templates prüft vor dem Rendern eigenständig, ob die jeweilige Spalte überhaupt sichtbar sein soll - Kopf und Zelle bleiben dadurch immer im Gleichschritt. Ist die Spalte nicht sichtbar (Kill-Switch aus, oder kein Attribut mit dem jeweiligen Flag konfiguriert), wird <th>/<td> gar nicht gerendert, statt nur leer zu bleiben.

Theme-Kompatibilität

Ersetzt ein Theme eines der oben genannten Hook-Punkte komplett (statt es per weiterem Hook zu ergänzen), rendert dort einfach nichts von diesem Plugin - es gibt keinen Fehler, die Funktion fehlt nur an dieser Stelle.

Die Sichtbarkeits-Abfragen werden pro Request einmalig berechnet und zwischengespeichert. Unter PHP-FPM ist das unproblematisch; unter Dauerprozess-Laufzeiten gilt eine Einschränkung, siehe Fehlerbehebung.