Bedingung an Kategorie knüpfen - Syntax?

Ich verwende im Listing die Bedingung

{if $sArticle.attr1 == "neu"}{s name="Attribut1"}{/s}

und möchte die Ausgabe aber in einer bestimmten Kateorie ändern, finde aber offenbar nicht die richtige Syntax. Mein Ansatz ist folgender:

{if $sArticle.attr1 == "neu" and $sCategoryID == 48}{s name="Attribut1.1"}{/s}

Funktioniert aber nicht (bin kein Smarty/PHP-Held).

Über Hilfe würde ich mich freuen!

Danke!
Martin

Die Kategorie ID steht in $sCategoryContent.id

Wie man sich alle Variablen anzeigen lassen kann findest du hier: Debugging Shopware

Besten Dank für die Antwort. Ich muss nur noch mal blöd nachfragen:

{if $sArticle.attr1 == "neu" and $sCategoryContent.id == 48}{s name="Attribut1.1"}{/s}

war es nicht. Würdest Du dieses Beispiel einmal korrigieren, damit ich das Prinzip verstehe? Das wäre supernett.

Danke!

Sieht für mich erstmal alles richtig aus. Funktioniert deine erste Bedingung denn ohne der Kategorie?

An welcher Stelle steht deine Bedingung denn? Sieht aus wie die Produkt Box? Ich wüsste sonst nicht, wo es überhaupt eine $sArticle Variable geben könnte.

Ich hab eben noch gesehen, dass du den Namen deines Textbausteins von Attribut1 aus Attribut1.1 geändert hast. Gibt es den Textbaustein denn? Was ist wenn du den Textbaustein erstmal durch einen statischen Text zum debuggen änderst?

Hallo Arne,

danke schon einmal vorab für Deine schnellen Antworten!

Ich habe natürlich die Inhalte leicht abgeändert.

Es handelt sich dabei um das Listing Template. Der gesamte Quelltext des Blocks ist wie folgt:

{if $sArticle.attr1 == "neu"}{s name="GeschBer1"}{/s}
{elseif $sArticle.attr1 == "gebraucht"}{s name="GeschBer2"}{/s}
{elseif $sArticle.attr1 == "gebraucht - 2. Wahl"}{s name="GeschBer3"}{/s}
{elseif $sArticle.attr1 == "gebraucht - 2. Wahl" and $sCategoryContent.id == 48}{s name="GeschBer3Relikt"}{/s}
{elseif $sArticle.attr1 == "gebraucht - 3. Wahl"}{s name="GeschBer4"}{/s}
{elseif $sArticle.attr1 == "defekte Ware"}{s name="GeschBer5"}{/s}
{elseif $sArticle.attr1 == "Sonderfall"}{s name="GeschBer6"}{/s}
{elseif $sArticle.attr1 == "Neu open box"}{s name="GeschBer11"}{/s}
{/if}

Mein Ansinnen ist es, wenn im attr1 Feld „gebraucht - 2.Wahl“ steht, der Artikel aber in der Kategorie 48 (Relikte) angezeigt wird, dann soll statt dem Textbaustein „GeschBer3“ der Textbaustein „GeschBer3Relikt“ angezeigt werden. Die Anzeige der jeweiligen Inhalte des attr1 Feldes funktioniert. Der Textbaustein „GeschBer3Relikt“ ist ebenfalls angelegt und befüllt.
Vielleicht habe ich ja auch nur einen Denkfehler?

Danke und Grüße!
Martin

Hi Martin,

das sieht immernoch alles richtig aus. Ich hanb so aus der Ferne leider auch keine Idee.

VG Arne

1 „Gefällt mir“

Dann gehe ich mal anders dran. Ich habe ein Freitextfeld in  s_categories_attributes angelegt und dann in der Kategorie direkt mit dem Inhalt “inhalt1” befüllt und möchte dann den Textbaustein 1 anzeigen lassen. Mein Code dazu:

{if $sCategory.attribute.attribute1 == "inhalt1"}{s name="Textbaustein 1"}{/s}{/if}

Problem: ich sehe nichts. Wo habe ich den Fehler?

{if $category.attribute.attribute1 == "inhalt1"}{s name="Textbaustein 1"}{/s}{/if}

ist ebenfalls funktionslos.

Gibt es keine ausführlichere Doku zu dem ganzen Thema Variablen und Textbausteine?

 

Danke!!

Vermutlich gibt es die Variablennamen nicht. Bzw. nicht an der Stelle an der du sie nutzten willst. Im Listing heißt die Variable z.b. $sCategoryContent und nicht $sCategory.

Das kann man aber recht einfach mit der Debug Funktion rausfinden. Den Link hatte ich in einem meiner vorherigen Posts schon mitgeteilt.

Was erwartest du denn von einer ausführlichen Doku? Es gibt natürlich die offizielle Smarty Doku (Smarty - die kompilierende PHP Template-Engine | Smarty) und natürlich auch was zu Textbausteinen (Shopware 5 snippet management)

1 „Gefällt mir“

Ah, danke! Ich wusste nicht, dass nicht alle Variablen überall einsetzbar sind.
Mit der debug Funktion wusste ich nicht so viel anzufangen, aber dann setze ich mich damit mal auseinander.

Vielen Dank für Deine Geduld!

Ja, und leider sind die Variablen auch nicht immer konsistent benamt.

1 „Gefällt mir“