Anzeigen von Inhalten abhängig von Artikelkategorie

Hallo liebe SW Community, gibt es eine Möglichkeit bei Shopware 5 den Namen oder besser die ID der aktuellen Kategorie auszulesen und dann mit einer if/else Abfrage in der .tpl verschiedene Inhalte anzuzeigen?

Vielen Dank im vorraus!
Daniel

Was genau meinst du? Listing oder Artikeldetails?

Um das Listing (also die Kategorieansicht) flexibel anzupassen, definierst du Einkaufswelten. Siehe Doku.

Für Artikeldetails geht das nicht und würde aus verschiedenen Gründen (z.B. SEO) keinen Sinn machen, der Artikel ändert sich ja nicht, nur weil er in mehreren Kategorien geführt wird. In SW wird der Artikel immer der ersten angegebenen Kategorie als Hauptkategorie zugeordnet. Gehst du nun von einer der anderen Kategorien aus auf die Details, siehst du auch oben im Breadcrumb die Hauptkategorie, nicht die aufrufende Zweitkategorie.

LG Phil

Hallo phil, vielen Dank für deine Antwort. Lass mich das Ganze konkretisieren. Ich habe ein eigenes kleines Widget mit Javascript geschrieben, welches ich gerne in die description.tpl einfügen möchte und zwar da wo sonst die weiterführenden Links sind. Aber nur auf bestimmten Kategorien. Was ich bis jetzt mache ist, dass ich mir die URL der Seite geben lasse und darauf hin das Widget anzeige. Das ist aber mit einigen Problemen behaftet. Deshalb fände ich es cool wenn man wie z.B. bei Wordpress sich einfach eine Kategorie ID geben lassen kann. Geht so was? So sieht es jetzt aus (vereinfacht)

` {if $smarty.server.REQUEST_URI|strstr:„string_in_url“}

        {block name='frontend_detail_description_calc'}
            Mein Widget
        {/block}
     {else}
        {* Product - Further links *}
        {block name='frontend_detail_description_links'}
        {/block}
    {/if}`

Also sind wir in den Tabs auf der Artikeldetailseite. Wieso ist dein Widget von der aufrufenden Kategorie abhängig und nicht vom Artikel? Dann könntest Du nämlich einfach für Artikel ein Freitextfeld als Boolean definieren, welches die Anzeige deines Widgets steuert, und dieses Feld bei den betreffenden Artikeln setzen.

Ansonsten musst du aufgrund des bereits beschriebenen Verhaltens einiges Umbauen und beim Listing anfangen. In deiner listing.tpl kommst du ja über $sCategoryContent.id an die ID der Kategorie ran. Hier ist auch der foreach, der die product_box.tpl included. In der Product Box wiederum ist dann der Link auf die Detailseite enthalten. Diesem müsstest Du nun noch als URL-Parameter die Id mitgeben (z.B. ?cid=$sCategoryContent.id an den Link anhängen). Im Zieltemplate (also deiner description.tpl) kannst du nun diesen Parameter wieder abfragen, z.B. {if $smarty.get.cid eq 68}…{/if}

Nur mal so als potentieller Lösungsansatz, ich hoffe du kannst mir folgen…

LG Phil

Hallo phil, vielen Dank! Ich kann dir folgen und das gibt mir die notwendigen Impulse die ich erhofft habe. Mir war nicht klar, dass man die id vom Listing an die Description per Parameter weitergeben muss. Aber die Lösung mit dem Freitextfeld gefällt mir fast noch besser. Dann hat man da mehr Flexibilität. Das werde ich im am Wochenende gleich mal ausprobieren.
Tausend Dank!