{if $Controller == 'listing'} funktioniert nicht

Hallo,

ich möchte gerne den emotion Slider um eine Information ergänzen. Diese Info soll nur im Listing erscheinen. Dafür habe ich folgendes angegeben:

{extends file="parent:frontend/listing/product-box/box-emotion.tpl"}

{* Product name *}
{block name='frontend_listing_box_article_name' append}
    {if $Controller == 'listing'}
{$sArticle.swag_attr21|strip_tags|truncate:70}
    {/if}
{/block}

Was ist denn falsch?

 

Gruß

Patrick

Was genau macht er nicht? 

Wird das div dargestellt und ist leer oder wird es gar nicht angezeigt?

Es kommt gar nicht. Ohne der Anweisung zum Controller kommt es, aber halt auch z.B. auf der Startseite und dort wollte ich die Info nicht.

Lass dir mal den wert von $Controller anzeigen. Ich denke der ist hier eher immer emotion als was anderes.

Versuch es mal so, wie auch im Bare der Controller abgefragt wird - mit {controllerName}

{if {controllerName} == 'listing'} 

  

Ging auch nicht.

Jetzt habe ich mal mit

{if $Controller != ‘index’}
 

versucht. Funktioniert teilweise. Im Liveshopping geht es, aber nicht in anderen Elementen. 

Lass Dir doch einfach mal den Controllernamen anstelle vom swag_attr21 ohne If ausgeben. Dann siehst Du doch, wie der passende Name in den verschiedenen Listen ist.
Und immer schön den Cache leeren.

Hallo @sonn‍,

den Controller-Namen kannst du in Shopware 5 über die Smarty Funktion {controllerName} abfragen:

{if {controllerName} === 'home'}
   {* do your home specific stuff here *}
{/if}

Dein Code-Beispiel lässt darauf schließen, dass du die Artikel-Box der Einkaufswelten bearbeiten willst. Beachte hierbei dass der Controller-Name der Einkaufswelten immer Emotion ist, egal ob die Einkaufswelt auf der Startseite oder in einer Kategorie einbunden wird.

Viele Grüße,
Stephan  Shopware

So ganz kapiere ich es noch nicht.

Also, der Controller ist dann emotion. Und wenn ich dann das Element nur im Listing anzeigen lassen möchte, was mache ich dann? Auf der Startseite ist auch eine Einkaufswelt mit Slidern.

Einkaufswelten werden immer über einen eigenen request geladen. Der controller dafür ist immer emotion. Du kannst im Shopware standard innerhalb der Einkaufswelt nicht erkennen auf welcher Seite sie geladen wird.

Viele Grüße

ok, jetzt hab ich es kapiert.

Danke.