# Welcher Controller ist der Richtige

**URL:** <https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211>\
**Category:** Plugins\
**Created:** [12. April 2020 um 23:39 UTC](https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211 "2020-04-12T23:39:17Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![thomas1980](https://avatars.discourse-cdn.com/v4/letter/t/c2a13f/32.png) [@thomas1980](https://forum.shopware.com/u/thomas1980)\
**Post date:** [12. April 2020 um 23:39 UTC](https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211/1 "2020-04-12T23:39:17Z")

</div>

Hallo Leute,

ich bin ganz neu hier und ich hab ein Problem mit meinem Plugin. Ziel ist es die Preise pro Einheit 3stellig darzustellen. Im Template hat es gut funktioniert, nun wollte ich aber ein Plugin machen, das das gleiche tut und scheitere scheinbar an den Controllern. Meine Bootstrap.php sieh wie folgt aus:

```
subscribeEvent(
			'Enlight_Controller_Action_PostDispatch_Frontend_Detail',
			'onPostDispatchContent'
		);
	  	  
		$this->subscribeEvent(
			'Enlight_Controller_Action_PostDispatchSecure_Widgets_Index',
			'onPostDispatchContent'
		);
	  
		$this->subscribeEvent(
			'Enlight_Controller_Action_PostDispatchSecure_Widgets_Listing',
			'onPostDispatchContent'
		);
	  
		$this->subscribeEvent(
			'Enlight_Controller_Action_PostDispatchSecure_Widgets_Emotion',
			'onPostDispatchContent'
		);
	  	  
		return true;
	}
	
	public function onPostDispatchContent(Enlight_Event_EventArgs $arguments) {
	  $view = $arguments->getSubject()->View();
	  $view->addTemplateDir($this->Path() . 'frontend/');
	  $view->extendsTemplate('changes/block_price.tpl');
	  $view->extendsTemplate('changes/data.tpl');
	  $view->extendsTemplate('changes/product-price-unit.tpl');
	}
	 
}

```

Leider wird nur die “block\_price.tpl” aus dem Verzeichnis “detail” überschrieben und bei den Block-Preisen hab ich 3 Nachkommastellen. Aber in den Boxen oder beim Topseller etc. bleibt es bei&nbsp; 2 Stellen nach dem Komma.

Wie gesagt, der Code in den drei .tpl Dateien ist identisch mit denen in meinem Template wo es funktioniert hat. Hier aber wird er gar nicht erst ausgeführt. Ich nehme daher an ich brauche andere Controller in meinem subscribe aber ich weiß nicht welche …

Kann jmd. helfen?

---

<div class="post-metadata">

**Author:** ![vanwittlaer](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/vanwittlaer/32/8499_2.png) [@vanwittlaer](https://forum.shopware.com/u/vanwittlaer)\
**Post date:** [13. April 2020 um 08:53 UTC](https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211/2 "2020-04-13T08:53:22Z")

</div>

Du solltest dich mit dem „neuen“ Plugin-System von Shopware 5 vertraut machen:&nbsp;[https://developers.shopware.com/plugin-guide/](https://developers.shopware.com/plugin-guide/)

Viel Erfolg,

Geert

---

<div class="post-metadata">

**Author:** ![thomas1980](https://avatars.discourse-cdn.com/v4/letter/t/c2a13f/32.png) [@thomas1980](https://forum.shopware.com/u/thomas1980)\
**Post date:** [14. April 2020 um 11:10 UTC](https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211/3 "2020-04-14T11:10:30Z")

</div>

Vielen Dank für den Link. Ich werds vielleicht im nächsten Anlauf damit versuchen.

---

<div class="post-metadata">

**Author:** ![uehler](https://avatars.discourse-cdn.com/v4/letter/u/f14d63/32.png) [@uehler](https://forum.shopware.com/u/uehler)\
**Post date:** [16. April 2020 um 17:11 UTC](https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211/4 "2020-04-16T17:11:15Z")

</div>

Fürs Listing fehlt dir das Event Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Listing.  
Wie sieht denn dein Template aus? Wenn alle drei Datein den gleiche Inhalt haben, dann funktionierts in den Produktboxen nicht, weil du nicht den richtigen Block überschreibst

---

<div class="post-metadata">

**Author:** ![thomas1980](https://avatars.discourse-cdn.com/v4/letter/t/c2a13f/32.png) [@thomas1980](https://forum.shopware.com/u/thomas1980)\
**Post date:** [16. April 2020 um 18:55 UTC](https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211/5 "2020-04-16T18:55:33Z")

</div>

Hi,

danke ür die Antwort, aber es functioniert trotzdem nicht. Ich überschreibe bspws. in der Datei data.tpl folgendes, damit bekomme ich drei Nachkommastellen und die Währung.

```
{* Unit price is based on a reference unit *}
{if $sArticle.purchaseunit && $sArticle.referenceunit && $sArticle.purchaseunit != $sArticle.referenceunit && !$sArticle.sBlockPrices}

 {* Reference unit price content *}
 {block name='frontend_detail_data_price_unit_reference_content'}

  {assign var="ppe" value=$sArticle.referenceunit* ($sArticle.price_numeric/$sArticle.purchaseunit)}
  {assign var="ppestring" value=$ppe|string_format:"%.3f"}
  {assign var="currsymi" value=0}
  {assign var="currsym" value="{$currsymi|currency}"}
  {$currsym=$currsym|replace:"0":""}
  {$currsym=$currsym|replace:",":""}
  {$currsym=$currsym|replace:" ":""}
  {$currsym=$currsym|replace:".":""}
 				
  ({$ppestring|replace:".":","} {$currsym} {s name="Star" namespace="frontend/listing/box_article"}{/s}

  / {$sArticle.referenceunit} {$sArticle.sUnit.description})

 {/block}
{/if}

```

Wenn ich das ins Theme schreibe, dann funktioniert es einwandfrei. Hier im Plugin wird nur die block\_price.tpl überschrieben. Ich verstehe daher nicht wieso die anderen beiden Dateien, die im Theme funzen hier unangetastet bleiben.

---

<div class="post-metadata">

**Author:** ![thomas1980](https://avatars.discourse-cdn.com/v4/letter/t/c2a13f/32.png) [@thomas1980](https://forum.shopware.com/u/thomas1980)\
**Post date:** [16. April 2020 um 19:03 UTC](https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211/6 "2020-04-16T19:03:18Z")

</div>

Die product-price-unit.tpl hab ich auch komplett übernommen und darin Änderungen vorgenommen.

```
{namespace name="frontend/listing/box_article"}

{$tooltip = "{s name='ListingBoxArticleContent'}{/s}"|escape:'html'}
{$hasPurchaseUnit = $sArticle.purchaseunit && $sArticle.purchaseunit != 0}
{$hasReferenceUnit = $sArticle.purchaseunit && $sArticle.referenceunit && $sArticle.purchaseunit != $sArticle.referenceunit}

{if $hasPurchaseUnit}
    {$purchaseUnit = "{$sArticle.purchaseunit} {$sArticle.sUnit.description}"}
    {$tooltip = "{$tooltip} {$purchaseUnit|escape:'html'}"}
{/if}

{if $hasReferenceUnit}
	{assign var="ppe" value=$sArticle.referenceunit*($sArticle.price_numeric/$sArticle.purchaseunit)}
	{assign var="ppestring" value=$ppe|string_format:"%.3f"}
	{assign var="currsymi" value=0}
	{assign var="currsym" value="{$currsymi|currency}"}
	{$currsym=$currsym|replace:"0":""}
	{$currsym=$currsym|replace:",":""}
	{$currsym=$currsym|replace:" ":""}
	{$currsym=$currsym|replace:".":""}
    {$price = "{$sArticle.referenceprice|currency}"}
    {$unit = "{s name='Star'}{/s} / {$sArticle.referenceunit} {$sArticle.sUnit.description}"}
    {$referenceUnit = "({$ppestring} {$currsym} {$unit|escape:'html'})"}
    {$tooltip = "{$tooltip} {$referenceUnit}"}
	

{/if}

    {* Price is based on the purchase unit *}
    {if $hasPurchaseUnit}

        {* Unit price label *}
        {block name='frontend_listing_box_article_unit_label'}
            
                {s name="ListingBoxArticleContent"}{/s}
            
        {/block}

        {* Unit price content *}
        {block name='frontend_listing_box_article_unit_content'}
            
                {$purchaseUnit}
            
        {/block}
    {/if}

    {* Unit price is based on a reference unit *}
    {if $hasReferenceUnit}

        {* Reference unit price content *}
        {block name='frontend_listing_box_article_unit_reference_content'}
            
                {$referenceUnit}
            
        {/block}
    {/if}

```

Und wie bereits erwähnt: Alle drei Datein in richtige Verzeichnis des Themes gespeichert und alles funktioniert. Hier im Plugin Fehlanzeige. Es werden die originalen Dateien benutzt nicht meine veränderten.

---

<div class="post-metadata">

**Author:** ![uehler](https://avatars.discourse-cdn.com/v4/letter/u/f14d63/32.png) [@uehler](https://forum.shopware.com/u/uehler)\
**Post date:** [19. April 2020 um 16:20 UTC](https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211/7 "2020-04-19T16:20:18Z")

</div>

Leg mal deine überschriebenen Dateien in der gleichen Ordnerstruktur ab wie die Originale, also z.B. frontend/detail/index.tpl liegt dann unter MeinPlugin/Resources/Views/frontend/detail/index.tpl. Dann überarbeite deinen Subscriber, dass du nur noch in Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend und Enlight\_Controller\_Action\_PostDispatchSecure\_Widgets hängst und mach da drin nur ein $args-\>getSubject()-\>View()-\>addTemplateDir(‘pfad/zu/deinen/Templates’);. Damit sagst du, egal was im Frontend passiert, da liegen Templates. Ab Shopware 5 werden die Templates, wenn die den originalen Pfad nachbilden, automatisch geladen. Und in deinen Templates überschreib nicht alles, sondern nur den einen Block, den du wirklich brauchst.

---

<div class="post-metadata">

**Author:** ![thomas1980](https://avatars.discourse-cdn.com/v4/letter/t/c2a13f/32.png) [@thomas1980](https://forum.shopware.com/u/thomas1980)\
**Post date:** [23. April 2020 um 17:53 UTC](https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211/8 "2020-04-23T17:53:55Z")

</div>

Hi,

vielen Dank, vielleicht klappt es so. Ich geb Bescheid 😉

---

<div class="post-metadata">

**Author:** ![thomas1980](https://avatars.discourse-cdn.com/v4/letter/t/c2a13f/32.png) [@thomas1980](https://forum.shopware.com/u/thomas1980)\
**Post date:** [25. April 2020 um 22:53 UTC](https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211/9 "2020-04-25T22:53:04Z")

</div>

Also damit funktioniert es dann leider gar nicht mehr. Aber ich habe bemerkt Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend genügt für die block-price.tpl. Die anderen werden nach wie vor ignoriert.

---

<div class="post-metadata">

**Author:** ![thomas1980](https://avatars.discourse-cdn.com/v4/letter/t/c2a13f/32.png) [@thomas1980](https://forum.shopware.com/u/thomas1980)\
**Post date:** [25. April 2020 um 23:38 UTC](https://forum.shopware.com/t/welcher-controller-ist-der-richtige/66211/10 "2020-04-25T23:38:03Z")

</div>

Ich habs zwar gelöst, verstehe aber immer noch nicht den Fehler. Der Code aus product-price-unit.tpl steht bei mir jetzt in box-basic.tpl, statt dem inlcude. Denn box-basic.tpl wird geladen im Gegensatz zu product-price-unit.tpl — nur warum ist das so???

Die Bootstrap.php sieht jetzt so aus:

```
subscribeEvent(
			'Enlight_Controller_Action_PostDispatchSecure_Frontend',
			'onPostDispatchContent'
		);
	  	  	  	  
	  	  
		return true;
	}
	
	public function onPostDispatchContent(Enlight_Event_EventArgs $arguments) {
	  $view = $arguments->getSubject()->View();
	  $view->addTemplateDir($this->Path() . 'frontend/');
	  $view->extendsTemplate('detail/block_price.tpl');
	  $view->extendsTemplate('detail/data.tpl');
	  $view->extendsTemplate('listing/product-box/box-basic.tpl');
	}
	 
}

```

Und die 3 tpl’s werden geladen.

&nbsp;
