# Plugin mit Plugin überschreiben

**URL:** <https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602>\
**Category:** Programmierung\
**Created:** [23. Januar 2018 um 07:47 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602 "2018-01-23T07:47:19Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [23. Januar 2018 um 07:47 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/1 "2018-01-23T07:47:19Z")

</div>

Hallo,&nbsp;

mal angenommen ich möchte ein Shopware Premium Plugin mit einem eigenen Plugin überschreiben. Z.B.: das Swag Emotion Advanced.

Dabei registriere ich meine Template Direction am Event:&nbsp;Enlight\_Controller\_Action\_PostDispatchSecure\_Widgets\_Emotion

Wie kann ich sicher stellen, dass mein Event nach dem Shopware Plugin geladen wird und dessen tpl-Dateien überschreibt?

---

<div class="post-metadata">

**Author:** ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)\
**Post date:** [23. Januar 2018 um 09:05 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/2 "2018-01-23T09:05:41Z")

</div>

Hallo,

du kannst bei der Registrierung von Events auch eine Position für deine Callback Methode angeben:&nbsp;[Cheat-Sheet for developers](https://developers.shopware.com/developers-guide/cheat-sheet/#events)

Viele Grüße aus Schöppingen

![cool](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/86c57fbace799dd4eb1f1b8a2d3bdc1733f0aea1.png "cool")&nbsp;Michael Telgmann

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [23. Januar 2018 um 14:20 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/3 "2018-01-23T14:20:31Z")

</div>

Danke [@Michael Telgmann]([http://forum.shopware.com/profile/17553/Michael](http://forum.shopware.com/profile/17553/Michael) Telgmann “Michael Telgmann”)‍

&nbsp;

Jetzt ist es im betreffenden Fall so, dass das Template des Plugin über&nbsp;

```
 'Theme\_Inheritance\_Template\_Directories\_Collected' =\> 'onTemplateDirectoriesCollect'

```

registriert wird. Und mein Event&nbsp;Enlight\_Controller\_Action\_PostDispatchSecure\_Widgets\_Emotion scheinbar früher startet.&nbsp;

---

<div class="post-metadata">

**Author:** ![simkli](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/simkli/32/13124_2.png) [@simkli](https://forum.shopware.com/u/simkli)\
**Post date:** [23. Januar 2018 um 14:33 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/4 "2018-01-23T14:33:19Z")

</div>

Und was genau hindert dich daran, ebenfalls dieses Event für deine Template-Pfad Registrierung zu nutzen?&nbsp; ![Sticking-out-tongue](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/ac0c93e2160fb9e91c30767775d64444ad0f06c4.png "Sticking-out-tongue")

Viele Grüße

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [23. Januar 2018 um 14:37 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/5 "2018-01-23T14:37:24Z")

</div>

Dann wird die Seite gar nicht mehr angezeigt. Internal Server Error…

Das Plugin hat noch die alte Plugin-Struktur… falls es was damit zu tun hat. Das Event kann ich nicht verwenden

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [23. Januar 2018 um 15:00 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/6 "2018-01-23T15:00:21Z")

</div>

Okay verwende nun unten stehenden Code. Es überschreibt es aber leider immer noch nicht… das ist aber nur bei dem einen Kunden so… bei mir lokal kein Problem

&nbsp;

```
$this->subscribeEvent(
			'Theme_Inheritance_Template_Directories_Collected',
			'onTemplateDirectoriesCollect',
			1000
		);

public function onTemplateDirectoriesCollect(\Enlight_Event_EventArgs $args)
	{
		$dirs = $args->getReturn();
		$dirs[] = __DIR__. '/Views';

	    $args->setReturn($dirs);
	}
```

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [24. Januar 2018 um 07:26 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/7 "2018-01-24T07:26:45Z")

</div>

In älteren Versionen von SwagEmotionAdvanced wird noch ein anderes Event verwendet:&nbsp; **Enlight\_Controller\_Action\_PostDispatchSecure\_Widgets\_Emotion**

Könnte es sein, dass durch Updates des Plugins das Event&nbsp; **Theme\_Inheritance\_Template\_Directories\_Collected** hinzukommt und das alte noch bestehen bleibt, bis man das Plugin einmal neu installiert?

Ich kann mir nicht erklären, weshalb meine tpl-Dateien in diesem einen Fall nicht greifen.&nbsp;

&nbsp;

//Edit: Gebe ich im SwagEmotionAdvanced in der betreffenden .tpl-Datei {$smarty.block.parent} ein, wird mein Kram geladen. Meine Tempalte Directories sind also vorhanden, werden aber wieder überschrieben…&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [5. Februar 2018 um 11:36 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/8 "2018-02-05T11:36:06Z")

</div>

Ich muss das hier leider noch einmal anstoßen, da es mir nicht möglich ist die Template-Dateien des Plugis EmotionAdvanced zu überschreiben. was könnte ich hier noch prüfen?

---

<div class="post-metadata">

**Author:** ![derwunner](https://avatars.discourse-cdn.com/v4/letter/d/e5b9ba/32.png) [@derwunner](https://forum.shopware.com/u/derwunner)\
**Post date:** [5. Februar 2018 um 11:57 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/9 "2018-02-05T11:57:31Z")

</div>

Hallo

und einfach mit dem Theme injectBeforePlugins zu arbeiten wäre wohl keine Option? Das Flag einfach umkehren, sodass das Theme nach den Plugins geladen wird und schon sollte der eigene Smarty Block greifen. Dafür brauchts keine Events und kein gar nichts.

&nbsp;

&nbsp;

MFG

&nbsp;

derwunner

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [5. Februar 2018 um 12:01 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/10 "2018-02-05T12:01:35Z")

</div>

@derwunner‍

es geht hier um kein Theme sondern um ein reines Plugin.

---

<div class="post-metadata">

**Author:** ![derwunner](https://avatars.discourse-cdn.com/v4/letter/d/e5b9ba/32.png) [@derwunner](https://forum.shopware.com/u/derwunner)\
**Post date:** [5. Februar 2018 um 12:09 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/11 "2018-02-05T12:09:38Z")

</div>

@mdsw‍ Geht aber trotzdem. Ein Beispiel: Plugin legt smarty View mit dem Namen “frontend/index/meineview.tpl” an. Das Theme hat ebenfalls eine View mit dem Namen “frontend/index/meineview.tpl”. Welche View nun ausgegeben wird, bzw. welche View welche überschreibt hängt jetzt ganz davon ab, wie im Theme die Variable injectBeforePlugins konfiguriert ist. Ist es der boolsche Wert true, dann wird die Plugin View ausgegeben. Ist der Wert false, dann wird zuerst die Plugin View und danach die Theme View ausgegeben.

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [5. Februar 2018 um 12:25 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/12 "2018-02-05T12:25:32Z")

</div>

@derwunner‍

ich weiß, dass man themes auf beide weisen anlegen kann.&nbsp;

Hier geht es aber darum, dass ich das Plugin EmotionAdvanced überschreiben möchte, welches seine Template-Dateien über&nbsp; **Theme\_Inheritance\_Template\_Directories\_Collected** einfügt. Mein Plugin schafft es nicht die tpl-Dateien des Plugins zu überschreiben. Ein Theme spielt hierbei keine Rolle.

---

<div class="post-metadata">

**Author:** ![lorenz1](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@lorenz1](https://forum.shopware.com/u/lorenz1)\
**Post date:** [6. März 2019 um 12:13 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/13 "2019-03-06T12:13:56Z")

</div>

Hi,

ich stehe gerade vor einem ähnlichem Problem. Und zwar würde ich gerne Pluginseitig gewisse Frontendanpassungen des swag Bonussystem Plugins überschreiben. Im genauen geht es um die Ausgabe der benütigten Bonuspunkte um den Artikel zu erwerben in den Artikelboxen der Product slider.

Ich habe sämtliche hier vorgeschlagenen Varianten getestet ohne Erfolg. Ausserdem habe ich verschiedenste Events getestet und auch per Priorisierung versucht diese “über” das Bonussystem zu positionieren. Auch die ganzen widget Events etc haben keine erfolg gebracht.

Auch wenn ich die Folders per subscriber/service einbinde schaffe ich es nicht die tpls aus dem bonus system zu überlagern.

&nbsp;

Zwei Sachen verstehe ich im besonderen nicht:

1. wie schafft es das Bonussystem sich immer an eine übergeordnetet Stelle zu positionieren da hier ja nichts überschrieben wird.

2. Wie genau tickt dieser Priorisierungsparameter? Ich kenne diesen aus dem alten Plugin Stack, hier hat er teilweise auch abhilfe gebracht oder - wie im frontendcache plugin - zu problemen geführt. Im neuen Stack habe ich nun schon mehrfach mit dem Parameter experimientiert leider immer ohne jeden Erfolg. Damals war es glaube auch so das nur werte bis X gegriffen haben also ein Wert von 1000 hat dann keinen sinn gemacht wie ist das jetzt? Gefühlt greift hier garnichts egal was ich einstelle.

&nbsp;

Viele Grüße

Lars Lorenz

&nbsp;

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![hhmarco73](https://avatars.discourse-cdn.com/v4/letter/h/ed8c4c/32.png) [@hhmarco73](https://forum.shopware.com/u/hhmarco73)\
**Post date:** [7. März 2019 um 09:39 UTC](https://forum.shopware.com/t/plugin-mit-plugin-uberschreiben/50602/14 "2019-03-07T09:39:42Z")

</div>

Meines Erachtens ist da aktuell&nbsp;ein Bug drin, siehe&nbsp;[Consider prioritized hooks in HookExecutionContext::executeReplaceChain by marcop73 · Pull Request #1988 · shopware/shopware · GitHub](https://github.com/shopware/shopware/pull/1988)

Der ist zwar von mir gefixed, da ich aber bisher keine Zeit hatte dafür einen Test zu schreiben, wurde der PR geschlossen.&nbsp;
