Zugriff auf die sCustom-Variable

Hallo liebe Community,

ich bin noch neu bei Shopware und wollte fragen ob mir jemand helfen kann, ein Styling von ausgewählten Seiten zu erstellen. Mit CSS und HTML bin ich vertraut, ich benötige nur eine Möglichkeit, die Seiten per ID zu identifizieren. Ich habe gesehen, dass es in Shopware bei „Embedded Code“ eine ID unter dem Namen „sCustom“ gibt, aber ich habe keine Möglichkeit, diese in der index.tpl zu referenzieren.

Durch diesen Kommentar https://forum.shopware.com/discussion/comment/137778/#Comment_137778 kam ich darauf, das Ganze als Klasse im

-Tag zu versuchen und habe auch den Ort der Einbindung gefunden, sodass mit eine Klasse angehängt wird. Dieser Kommentar https://forum.shopware.com/discussion/comment/145623/#Comment_145623 sagt dann, dass die Variablen aus „Embedded Code“ über {$smarty.get.} erreichbar sind, allerdings funktioniert das bei mir (zumindest im tpl-File) nicht. Auch ist es mir nicht möglich, wie in dieser letzten Fragestellung, eine weitere Variable zu „Embedded Code“ hinzuzufügen.

Mein Ziel ist es, auf 3-4 Seiten die Überschriften mit einer anderen Farbe zu versehen, da sie zu einem anderen Bereich/Programm gehören. Die Seiten existieren alle schon und ich hoffe, dass es eine schnelle und einfache Lösung gibt, ohne dass ich irgendetwas umstrukturieren muss. Könnte mir da vielleicht jemand helfen?

LG Nina

Du kannst in deinem Theme z.B. {$sCustomPage|print_r} setzen, dann siehst du welche Variablen hier verfügbar sind. Dort hast du auch {$sCustomPage.id} und kannst das im Zusammenhang mit einer CSS-Klasse benutzen. Dann kannst du ganz locker jeder Seite gezielt ansprechen.

Nachtrag:

Damit könnte man dann das eigene Theme erweitern.

Datei /themes/Frontend/MeinTheme/frontend/custom/index.tpl

Inhalt:

{extends file="parent:frontend/custom/index.tpl"}

{* Main content *}
{block name="frontend_index_content"}
  
    {$smarty.block.parent}
  
{/block}

Und schon hast du bei den Seiten ein zusätzliches DIV mit einer Klasse.

Vielen Dank für die schnelle Antwort R4M!

Also ich habe es geschafft, eine neue Klasse in den

Tag einzubinden und auch auf id zuzugreifen. Allerdings geht das nur bei der Kriterienseite, an der dann die Klassen “is–ctl-custom is–act-index is–custom- is-green-vision” hängen (is-green-vision habe ich durch ein {if ({s.get.sCustom}} angehängt). Bei der Bewerbungsseite (ein Formular) und der Veröffentlichungsseite (ein Beitrag) bräuchte ich das aber auch und da steht bei ersterem (wie auch auf der Startseite) nur eine “1” wenn ich die -Klasse mit {$sCustomPage|print_r} anhänge (“is–ctl-forms is–act-index is–custom-1” ) und bei letzterem gar nichts (“is–ctl-blog is–act-detail is–custom-”).

Bei allen drei ist aber das sCustom im Embedded Code gesetzt und diese drei möchte ich auch mit dem Code ansprechen. Ist das noch irgendwie anders möglich?

 

 

 

Keine Ahnung was bei dir eine “Kriterienseite” sein soll, aber wenn eine Formularseite oder Blogseite aufgerufen wird dann ist das etwas anders als eine Shopseite. Bedeutet, du müsstest mehrere Templates anpassen. {$sCustomPage.id} funktioniert nur bei Shopseiten (eben Custom) nicht bei Formularen oder Blog. Aber das Prinzip sollte das gleich sein. Bei Blog ist es {$sArticle.id} und bei Formularen ist es {$sSupport.id}. Ja und die Startseite ist nur einmal vorhanden :slight_smile:

Du musst dich auf alle Fälle mit den Templates befassen. Solche Anpassungen setzen gewisses Grundwissen voraus.

Habe noch etwas darüber nachgedacht. Eine Möglichkeit wäre diese:

Datei /themes/Frontend/MeinTheme/frontend/index/index.tpl

{extends file="parent:frontend/index/index.tpl"}

{* body tag *}
{block name="frontend_index_body_classes"}
  {$smarty.block.parent}

  {* Kategorien *}
  {if $sCategoryContent.id} category--id{$sCategoryContent.id} {/if}

  {* Shopseiten *}
  {if $sCustomPage.id} custom--id{$sCustomPage.id} {/if}

  {* Blog / Details *}
  {if $sArticle.id} blog--details--id{$sArticle.id} {/if}

  {* Formulare *}
  {if $sSupport.id} forms--id{$sSupport.id} {/if}

  {* Hersteller *}
  {if $manufacturer} manufacturer--id{$manufacturer->getId()} {/if}

{/block}

Dann hast du alle relevanten IDs im Body-Tag der Seite. Nur so als Vorschlag.

1 Like

Halleluja, ich danke dir! Das funktioniert perfekt!

Gott segne dich! :slight_smile: