Warenkorb- & Checkout-Attribute: Storefront
Twig Hooks des Plugins in Warenkorb, Checkout-Sidebar und Bestellübersicht, Wiederverwendung der Attribut-Partials und Spalten-Unterdrückung.
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.