Belege mittels Plugin anpassen

Hallo,

ich habe erst vor kurzem mit der Shopware-Entwicklung angefangen, doch habe ich es mittlerweile bereits geschafft ein eigenes Plugin zu erstellen, welches bei der Registrierung eines Users ein zusätzliches Feld in das Adress-Formular einfügt und dieses dann auch in der Datenbank als Attribut ablegt. Genau dieses Feld möchte ich nun aber auch in den PDF-Rechnungsbeleg einfügen, weshalb ich im default-Template (/documents/index.tpl) den Block „document_index_address_countryData“ erweitern wollte.
Da ich dies nicht über ein eigenes Theme machen will, sondern direkt über das Plugin selbst, gehe ich davon aus, dass ich mein Plugin für ein weiteres Event mittels getSubscripteEvents() registrieren muss, wo das Template-Verzeichnis meines Plugins berücksichtigt werden soll.

Leider ist es mir bis dato nicht gelungen das richtige Event zu finden - kann mir hier vielleicht jemand einen Tipp geben?
Hab schon folgende versucht: Shopware_Controllers_Backend_Order, Shopware_Components_Document, Enlight_Controller_Action_PostDispatchSecure_Backend

Mein Plugin-Template hab ich unter: /custom/plugins/MeinPlugin/Resources/views/documents/index.tpl
Beim Auslösen des Events rufe ich folgende Funktion auf um das Plugin-Templateverzeichnis anzufügen:

public function addTemplateDir(\Enlight_Event_EventArgs $args)
{
    $controller = $args->getSubject();
    $controller->View()->addTemplateDir( __DIR__. '/Resources/views/');
}

Meine Plugin-index.tpl sieht derzeit noch recht einfach aus:

{extends file="parent:documents/index.tpl"}

{block name="document_index_address_countryData" append}
    Hallo Welt aus Plugin-Template
    var_dump: {$User.$address|var_dump}
{/block}

Besten Dank für eure Hilfe

In Shopware 4 habe ich das mal folgendermaßen gemacht. Ob das immernoch so funktioniert weiß ich leider nicht. Müsstest du ausprobieren. Aber ich wüsste auch nicht was sich da geändert haben sollte. Das ist natürlich die Syntax für das alte Plugin System. Aber vielleicht nützt dir das Event als Inspiration.

		// load document template from plugin directory
		$this->subscribeEvent(
			'Shopware_Components_Document::assignValues::after',
			'onBeforeRenderDocument'
		);

	/**
	 * add document template to template path
	 * source: https://gist.github.com/hlohaus/d49f0f2e388cddbb1991
	 * @param Enlight_Hook_HookArgs $args
	 * @return void
	 */
	public function onBeforeRenderDocument(Enlight_Hook_HookArgs $args)
	{
		/* @var Shopware_Components_Document $document */
		$document = $args->getSubject();

		$document->_template->addTemplateDir(dirname( __FILE__ ) . '/Views/');
	}

 

Hallo arnebecker,

Danke für deinen Tipp.
Leider wird mein Template immer noch nicht berücksichtigt - das Event löst diesbezüglich aber korrekt aus (ein echo() + die() and dieser Stelle löst beim Erstellen einer Rechnung wie gewünscht aus). Dennoch ist zwar das Erweitern des Rechnungs-Templates über das Theme möglich, aber jenes des Plugins wird nicht berücksichtigt.

Falls jemand für Shopware 5 (ich verwende derzeit 5.3.4) noch einen Tipp hat, wäre ich sehr dankbar.