Zurück zupickware.de

Shopware Tipps & Tricks – Anpassung pluginspezifischer Dokumentenvorlagen

pickware_blog-logo_tipps-tricks

Herzlich willkommen zum bereits achten Teil unserer Reihe Shopware Tipps & Tricks!

In der Vergangenheit sind Kunden häufig mit Problemen an uns herangetreten, die mit der Anpassung pluginspezifischer Dokumentenvorlagen in Verbindung standen. Deshalb möchten wir heute den aus unserer Sicht korrekten Umgang bei der Individualisierung solcher Dokumentenvorlagen zusammenfassen und Ihnen die Hintergründe erklären.

Relevantes Hintergrundwissen

Da die pluginspezifischen Dokumentenvorlagen auf der gleichen Logik wie die Shopware Standardtemplates basieren, sollten Sie sich vorher mit dem allgemeinen Shopware Templating auseinandersetzen. Ebenso sollten Sie ein Verständnis über Vererbungsstrukturen von Templates haben.

Problembeschreibung

Sie haben die Dokumentenvorlage eines Plugins an Ihre eigenen Bedürfnisse angepasst, es wird aber dennoch das alte Template verwendet? Woran das liegen kann, möchten wir an einem Beispiel erklären. Dafür werfen wir einen Blick in unser Mahnwesen Plugin und dessen Standarddokument für die Mahnung erster Stufe:

mahnung_before

Wo werden die Dokumentenvorlagen hinterlegt?

Die Dokumentenvorlage ist für das entsprechenden Dokument in der Shopware PDF-Belegerstellung hinterlegt. In unserem Beispiel also unter Einstellungen > Grundeinstellungen > Shopeinstellungen > PDF-Belegerstellung > “Mahnung Stufe 1”.

reminderlvl1

Wird ein entsprechendes Dokument generiert, wird auf die Vorlage zurückgegriffen, welche unter Template hinterlegt ist (im Beispiel: reminderlevelone.tpl). Diese wird nach einem festgelegten Schema, anhand einer Hierarchie von Suchorten gesucht. Die dabei zuerst gefundene Vorlage wird gerendert. Selbstverständlich wird hierbei auch die Vererbungshierarchie des Templates berücksichtigt. Die Suchhierarchie zu verstehen, ist demnach sehr wichtig für das erfolgreiche Anpassen der Dokumentenvorlagen.

Wie ist die Suchhierarchie im Falle von Dokumentenvorlagen aufgebaut?

Abhängig davon, worauf die Variable $injectBeforePlugins in Ihrer theme.php gesetzt ist, gibt es zwei Möglichkeiten wie die Suchhierarchie im Falle von Dokumentenvorlagen aufgebaut ist.

variant-a
variant-b

Ist $injectBeforePlugins auf false gesetzt (Suchhierarchie A), wird zunächst das Dokumenten-Theme nach dem Template durchsucht. Anschließend werden alle Plugins durchsucht und bei erfolgreicher Suche wird das zuerst gefundene Template verwendet.

Ist $injectBeforePlugins auf true gesetzt (Suchhierarchie B), werden zuerst alle Plugins nach dem Dokumententemplate durchsucht. Sobald die Suche erfolgreich war, wird sie abgebrochen und das gefundene Template gerendert.

Die Datei Ihrer eigenen angepassten Vorlage hinterlegen Sie in dem von Ihnen verwendeten shopspezifischen Dokumententemplate, welches Sie unter Einstellungen > Grundeinstellungen > Shops > “Dokumenten-Template” konfiguriert haben. Die Datei der pluginspezifischen Dokumentenvorlage liegt jedoch im Plugin selbst. Somit spielt es eine wichtige Rolle, wo mit der Suche nach dem Template begonnen wird. Das Ganze möchten wir an Hand unseres Beispiels verdeutlichen.

Wie sollte das Dokument angepasst werden?

Um eine bestehende Dokumentenvorlage zu bearbeiten, müssen Sie nicht die gesamte Template-Datei kopieren oder diese überschreiben. Es empfiehlt sich das Template-Vererbungssystem zu nutzen. So müssen Sie nur die Teile bearbeiten, die Sie wirklich ändern möchten.

Beispiel: Anpassung der Dokumentenvorlage der Mahnung Stufe 1
Wir möchten nun, dass die Tabelle unserer Mahnung Stufe 1 unterhalb der Überschrift angezeigt wird. Dafür erstellen wir eine entsprechende eigene Dokumentenvorlage, die von der Dokumentanvorlage des Mahnwesen Plugins erbt und speichern diese unter einem eigenen Namen (reminderlevelone_custom.tpl). In dieser Dokumentenvorlage müssen wir somit lediglich die bereits existierenden Elemente so anpassen, dass unsere Tabelle direkt nach der Überschrift angezeigt wird:

reminderlevelone_c

Nun tragen wir unsere eigene Dokumentenvorlage reminderlevelone_custom.tpl in Einstellungen > Grundeinstellungen > Shopeinstellungen > PDF-Belegerstellung > “Mahnung Stufe 1” in das Template Feld ein. Die Verwendung eines eigenen Namens für die eigene Vorlage ist hier besonders wichtig, um Probleme mit der Suchhierarchie zu vermeiden. Verwendet man nämlich den gleichen Namen für das eigene Template wird bei Suchhierarchie B (Shopware Standard) zuerst die Dokumentenvorlage des Plugins gefunden und gerendert. Die eigene Vorlage wird in diesem Fall gar nicht erst gefunden und somit bei der Erzeugung des Dokuments auch nicht berücksichtigt.

Es ist somit zu empfehlen der eigenen Dokumentenvorlage immer einen neuen Namen zu geben, damit es in keinem Fall zu Problemen mit der Suchhierarchie kommen kann.

In unserem Fall wird nun unabhängig von Suchhierarchie A oder B zunächst nach der Template-Datei reminderlevelone_custom.tpl gesucht und diese wird im Dokumenten-Theme gefunden. Da diese Datei von der ursprünglichen Template-Datei reminderlevelone.tpl erbt, werden die Suchorte in einem zweiten Schritt nach dieser Datei durchsucht. Die Datei wird im Plugin gefunden und das Dokument wie von uns gewünscht erzeugt:

mahnung_after2

Wir hoffen wir konnten Ihnen mit dem heutigen Blogpost weiterhelfen. Viel Spaß beim Ausprobieren und bis zum nächsten Teil unserer Reihe! Hier finden Sie alle bisherigen Teile von Shopware Tipps & Tricks.


Jetzt zum Newsletter anmelden und immer auf dem Laufenden bleiben!

Newsletter abonnieren

Ähnliche Beiträge


alle Blog-Beiträge

Wir verwenden Cookies von Drittanbietern wie Google und Facebook, um unsere Website ständig zu verbessern und Ihnen eine optimierte Benutzererfahrung sowie relevante Werbung zu bieten. Weitere Informationen dazu finden Sie in unserer Datenschutzerklärung.

Datenschutzeinstellungen

Hier finden Sie eine Übersicht aller Cookies. Sie können der Verwendung optionaler Cookies bei Bedarf widersprechen. Weitere Informationen zu den von uns eingesetzten Cookies finden Sie in unserer Datenschutzerklärung.

Essenziell

Essenzielle Cookies ermöglichen die grundlegende Bedienung der Website und sind für die einwandfreie Funktion erforderlich. Weitere Informationen finden Sie in unserer Datenschutzerklärung.

Marketing

Wir nutzen Cookies von Drittanbietern wie Google und Facebook. Diese erfassen das Nutzerverhalten, um Ihnen personalisierte Angebote zu bieten und ein optimales Nutzererlebnis zu garantieren. Weitere Informationen finden Sie in unserer Datenschutzerklärung.

Das Google Analytics und Facebook Tracking wurde deaktiviert. Das Google Analytics und Facebook Tracking wurde aktiviert. Vielen Dank!