Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net
Das Plugin liefert drei Template-Overrides mit, die den Filter mmd_snippets anwenden. Unter Shopware 6.7 sind davon zwei wirksam. Eigene Template-Änderungen sind dafür nicht nötig.
| Stelle | Template | Block | Ausgabe |
|---|---|---|---|
| Beschreibung im CMS-Produktlayout (Element "Produktbeschreibung" des Standard-Produktlayouts) | storefront/component/product/description.html.twig |
component_product_description_content_text |
HTML, Inhalte der Bausteine bereinigt |
| Produktkarten (Listen, Suche, CMS-Produkt-Slider und -Listings) | storefront/component/product/card/box-standard.html.twig |
component_product_box_description |
Nur Text, jedes HTML wird entfernt |
| Produktdetailseite, Legacy-Template | storefront/page/product-detail/description.html.twig |
page_product_detail_description_content_text |
Unter Shopware 6.7 inaktiv |
Das dritte Template ist unter Shopware 6.7 wirkungslos: Der Shopware-Kern hat in 6.7 kein Template mit diesem Pfad mehr, es ist seit 6.6 als veraltet markiert und wird nicht mehr standardmäßig geladen. Dieser Befund zum Shopware-Kern stammt aus den Quelltexten von Shopware 6.6 und 6.7. Die Plugin-Linie für Shopware 6.5/6.6 liefert dasselbe Template mit, ob der Kern es dort lädt, ist hier nicht geprüft.
Die Ersetzung gilt nur dort, wo der Filter angewendet wird: in der Produktbeschreibung des CMS-Produktlayouts und auf Produktkarten. Sie gilt nicht in CMS-Textelementen, in Kategorie-Beschreibungen, in Zusatzfeldern und in anderen Ausgaben, solange du dort den Filter nicht selbst einsetzt.
|mmd_snippetsErsetzt alle Platzhalter in einem String und liefert HTML zurück, das nicht zusätzlich maskiert wird:
{{ product.translated.description|mmd_snippets }}
Ein |raw ist nicht nötig. Ist der übergebene Wert leer, ist das Ergebnis ein leerer String.
mmd_snippet('identifier')Gibt den Inhalt eines einzelnen aktiven Bausteins in der aktuellen Sprache zurück, oder einen leeren String, wenn der Baustein nicht existiert oder inaktiv ist:
{{ mmd_snippet('garantie-info') }}
Die Funktion funktioniert nur in Twig-Templates, nicht in gespeicherten Inhalten wie Produktbeschreibungen. Dort verwendest du die Platzhalter-Syntax. Anders als der Filter bereinigt die Funktion den Inhalt nicht, sie gibt ihn so aus, wie er gespeichert ist. Pflege Bausteine deshalb nur mit Admin-Benutzern, denen du vertraust.
Wenn dein Theme einen der oben genannten Blöcke selbst überschreibt, ersetzt das Plugin dort nichts mehr, weil dann nicht mehr das Plugin-Template die Ausgabe erzeugt. Wende in diesem Fall den Filter im Override an:
{% sw_extends '@Storefront/storefront/component/product/description.html.twig' %}
{% block component_product_description_content_text %}
<div class="product-detail-description-text" itemprop="description">
{{ product.translated.description|mmd_snippets }}
</div>
{% endblock %}
Für andere Inhaltsbereiche setzt du den Filter in deinem eigenen Template auf den jeweiligen Wert.