# Dokumenten-Template in Plugin anpassen

**URL:** <https://forum.shopware.com/t/dokumenten-template-in-plugin-anpassen/59513>\
**Category:** Programmierung\
**Created:** [13. Mai 2019 um 15:17 UTC](https://forum.shopware.com/t/dokumenten-template-in-plugin-anpassen/59513 "2019-05-13T15:17:52Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![swtestp](https://avatars.discourse-cdn.com/v4/letter/s/dfb087/32.png) [@swtestp](https://forum.shopware.com/u/swtestp)\
**Post date:** [13. Mai 2019 um 15:17 UTC](https://forum.shopware.com/t/dokumenten-template-in-plugin-anpassen/59513/1 "2019-05-13T15:17:52Z")

</div>

Hallo,

ich versuche gerade, in einem Plugin eine Kleinigkeit bei den Dokumenten-Templates (Rechnung etc.) anzupassen, und diese Kleinigkeit dauert jetzt schon ewig, weil wenig Informationen zu finden sind. Sehr frustrierend…  
Vielleicht weiß ja hier jemand, wie man das macht?

Bisher habe ich es immerhin geschafft, den Template-Pfad des Plugins beim Dokumenten-Rendern verfügbar zu machen, und zwar durch einen Subscriber, der auf **Theme\_Inheritance\_Template\_Directories\_Collected** lauscht und den&nbsp;Template-Pfad des Plugins anhängt:

```
   public static function getSubscribedEvents() {
       return [
          'Theme_Inheritance_Template_Directories_Collected' => 'onCollectTemplateDir',
       ];
   }
   
    public function onCollectTemplateDir(\Enlight_Event_EventArgs $args) {
       $dirs = $args->getReturn();
       $dirs[] = $this->pluginDirectory . '/Resources/views/'; $args->setReturn($dirs);
    }

```

Über eine Instanz des Template managers und templateManager-\>addTemplateDir geht das leider nicht, die wird in render() in Shopware\_Components\_Document nicht genutzt. (Warum eigentlich nicht?)

Leider sind nun die Snippets nicht mehr verfügbar und es taucht z.B. #DocumentIndexCustomerID# im pdf auf. Dazu habe ich jetzt nun wirklich nichts mehr gefunden. Hat hier jemand genug Erfahrung um zu wissen, wie das gedacht ist? Wie kann ich die Snippets auch für das Template in meinem Plugin verfügbar machen? Oder gibt es eine bessere Methode als über **Theme\_Inheritance\_Template\_Directories\_Collected**?

---

<div class="post-metadata">

**Author:** ![swtestp](https://avatars.discourse-cdn.com/v4/letter/s/dfb087/32.png) [@swtestp](https://forum.shopware.com/u/swtestp)\
**Post date:** [14. Mai 2019 um 09:44 UTC](https://forum.shopware.com/t/dokumenten-template-in-plugin-anpassen/59513/2 "2019-05-14T09:44:58Z")

</div>

Zumindest an die im Template verfügbaren Variablen kommt man ähnlich dran wie bei normalen Views: Man registriert sich für **Shopware\_Components\_Document::assignValues::after** und kann bei den übergebenen **\Enlight\_Hook\_HookArgs** die Variablen auslesen (und verändern):

```
public static function getSubscribedEvents()
	{
		return [
			'Theme_Inheritance_Template_Directories_Collected' => 'addPluginTemplateDirectory',
			'Shopware_Components_Document::assignValues::after' => 'addSnippets'
		];
	}

public function addSnippets(\Enlight_Hook_HookArgs $args)
	{
		/* @var \Shopware_Components_Document $document */
		$document = $args->getSubject();
		$view = $document->_view;
// $view->assign('Pages', $orderData);
	}

```

&nbsp;
