Einkaufswelt/Kategorie mit eigener Farbe?

Hallo Community, bin neu hier und absolut begeistert von der neuen Shopware 4. Obwohl ich mich grundsätzlich mit Templateanpassungen einigermaßen auskenne, und HTML und css keine Fremdworte mehr für mich sind, habe ich das Templatesystem von SW4 noch nicht so richtig verinnerlicht. Denke das kommt vermutlich beim Arbeiten. Nun zu meiner Frage: mir gefällt das emotion template schon ziemlich gut. Nun hätte ich gerne eine Kategorie (oder ist das eine Einkaufswelt?) wie z.B. Wohnwelten aus dem Demoshop in der Farbe blau, und den Rest in pink. Es sollten dann alle in der entsprechenden Kategorie gefärbten Elemente (Warenkorb Button, Links etc.) blau sein, im übrigen Shop pink. Meine Idee (so grundsätzlich) wäre jetzt für die gesamte Kategorie Wohnwelten das Template emotion_blue zu verwenden, und für den Rest (Also Shopstandard) das template emotion_pink. Ist das irgendwie machbar? Wenn ja, kann mir jemand hier auf die Sprünge helfen? thx

http://store.shopware.de/template-desig … sel?c=2159 das vielleicht?

Hallo leseaw, danke schonmal für diese superschnelle Antwort. Das Plugin hatte ich noch nicht gesehen, und ist vielleicht auch eine Idee. Momentan lieber wäre mir eine Kategorie im komplett andersfarbigen Design der Elemente, also eigentlich exakt der farbigen Unterscheidung von emotion_blue zu emotion_pink zu haben. Also Shopware mitteilen: Grundsätzlich das Template emotion_pink verwenden, ausser in der Kategorie „wohnwelten“ dort bitte das Template emotion_blue! Ginge das?

alles geht :slight_smile: entweder du selber oder wer anderes macht es für dich.

[quote=„leseaw“]alles geht :slight_smile: entweder du selber oder wer anderes macht es für dich.[/quote] Na das ist mir ja klar. Ich dachte hier sei ein Forum, wo man sich ein bisschen hilft. Habe ja nur gefragt, ob mir jemand auf die Sprünge helfen kann. Hab hier schon ein paar Tutorials durchgelesen. Was ich schon verstanden habe, ist daß man für template-Änderungen eine Art Klon, des Ursprungstemplates erstellt, dann nur mit den Anpassungen. Ich Habe auch ein anders Tutorial gefunden, wo mit einer if/else Bedingung verschiedene kategoriebezogene styles angesprochen werden. Nur, ich dachte es sei eventuell möglich, einer Kategorie „zu sagen“ nehme dieses oder jenes template, also nicht jedes einzelne grafische Element mit einer Bedingung zu versehen. Vielleicht mag mir dazu jemand noch was schreiben?

Hallo „Allgemeine Einstellungen - Kategorie“ -> Templateauswahl Aber dann muss die ganze Vererbungsreihenfolge beachtet werden. Wie wäre es denn mit einer if Abfrage nach der aktiven Kategorie und danach der Auswahl von verschiedenen CSS-Dateien. Dann können alle Hintergrundbilder und Farben einzeln angepasst werden. Also ein Wechsel von emotion_pink nach emotion_black. Meiner Ansicht nach der einfachste Weg. Allerdings ist beim Klick auf ein Produkt unter Umständen die Artikeldetailseite in einer anderen aktiven Kategorie. Das müsste getestet werden.

Hallo hth, ich habe mal folgendes versucht bei aktiviertem emotoion_pink Template den Header entsprechend so angepasst Im Ordner templates>emotion_pink>frontend>index>header.tpl [quote] {extends file=‘parent:frontend/index/header.tpl’} {block name=“frontend_index_header_css_screen” append}{if $sCategory.id eq 8}{else} {/if} {/block} [/quote] und natürlich die emotion_blue.css in das entsprechende Verzeichnis kopiert. Klappt leider aber nicht. Die ID der Kategorie habe ich aus der Datenbank. Da ist es die “id”. Ne Idee?

Also, das vorstehende Snippet lädt die emotion_pink.css und zwar bei jeder Kategorie. Dann habe ich es mal so probiert: [quote] {extends file=‘parent:frontend/index/header.tpl’} {if $sCategory.id eq 5} {block name=“frontend_index_header_css_screen” append} {/block} {else} {block name=“frontend_index_header_css_screen” append} {/block} {/if} [/quote] und nun werden beide *.css (emotion_pink.css und emotion_blue.css) geladen und zwar in jeder Kategorie. Das sagt mir zumindest, dass der Ansatz ja funktionieren könnte, allerdings meine if/else Bedingung nicht zu stimmen scheint. Kann mir hier jemand weiterhelfen?

{block name=“frontend_index_header_css_screen” append} {if $sCategory.id eq ‘5’}{else}{/if} {/block} du hast ja die Blöcke immer abgeschlossen Probiere das mal

Das war ja der Versuch einen Post vorher. Das führt dazu, dass immer das pink css geladen wird. (habe es jetzt auch noch mal mit Deinem Snippet versucht). Wie sieht es denn aus mit der Identifizierung der Kategorie? Ich habe als ID das hier eingetragen Your text to link here… …scheint ja so, als würde SW hier mit der Bedingung die gewünschte Kategorie nicht erkennen, wenn er ja direkt auf die {else} Bedingung geht.

{block name=„frontend_index_header_css_screen“ append} {if $sCategory.id eq 5}{else}{/if} {/block} post49639.html?hilit=$sCategory.id#p49639 post48974.html?hilit=$sCategory.id#p48974 da findest du alles was du brauchst :slight_smile:

Hi, der Ansatz funktioniert und es funktioniert alles so wie es @senana im ersten Versuch im Template angegeben hat, allerdings übergibt das Shopware-Backend nicht die Variable $sCategory.id an die Template-Engine (smarty). Da $sCategory.id für Smarty nicht existiert, kann der Wert natürlich auch niemals 8 ergeben und {else} wird ausgeführt. Es wird nur ein assoz. Array $sCategories übergeben, schaut es euch mit firephp an. Daraus wird im horizontalen Menü immer die Variable $sCategory.id zugeordnet. Entweder ihr macht das auch so, oder ihr sprecht einzelne Elemente des Arrays mit Index an. Smarty-Dokumentation: http://www.smarty.net/docs/en/language.variables.tpl Firephp: gibt ein tutorial für die 3er Version, funktioniert mit Ver. 4 genauso. Bleibt die Frage, was jetzt genau gewünscht ist: (A.) alle Kategorien einer Hauptkategorie id=8 in Pink oder (B.) tatsächlich nur die aktuelle Kategorie. A. {if $sBreadcrumb[0].id eq 8} <link type="text/css" media="screen, projection" rel="stylesheet" href="%7Blink%20file='frontend/_resources/styles/emotion_pink.css'%7D"> {else} <link type="text/css" media="screen, projection" rel="stylesheet" href="%7Blink%20file='frontend/_resources/styles/emotion_meintheme.css'%7D">{/if} B. {if $sCategoryCurrent eq 5} <link type="text/css" media="screen, projection" rel="stylesheet" href="%7Blink%20file='frontend/_resources/styles/emotion_pink.css'%7D"> {else} <link type="text/css" media="screen, projection" rel="stylesheet" href="%7Blink%20file='frontend/_resources/styles/emotion_meintheme.css'%7D">{/if}[/code]

1 „Gefällt mir“

Super! Lösungsweg A. ist genau das was ich haben wollte. Perfekt! Tausend dank. Ich hatte mir schon gedacht dass Smarty hier vermutlich mit der Kategorie Id nix anfangen kann. Allerdings ist das mit einem assoziativen Array/firePHP für mich erst mal Neuland. Werde es mir aber mal ansehen. Auf jeden Fall danke für diese konkrete Hilfestellung.

Hallo zusammen, zwei Fragen zum Aufbau der vorstehenden Abfrage. 1.) Muss ich diesen Aufbau für jede Kategorie, die abgefragt werden soll, einzeln durchführen? 2.) Es reicht doch wenn in der jeweiligen CSS-Datei nur die Farbänderungen enthalten sind oder? Alles andere wird ja aus der Stammdatei genommen, wenn ich es bisher richtig verstanden habe. Gruß Markus

[quote=“wollstylisten”]Hallo zusammen, zwei Fragen zum Aufbau der vorstehenden Abfrage. 1.) Muss ich diesen Aufbau für jede Kategorie, die abgefragt werden soll, einzeln durchführen? [/quote] Für jede Kategorie, die eine eigene CSS-Datei erhalten soll, muss eine if-Abfrage erstellt werden. Mit “Eigene CSS-Datei” ist eine andere CSS-Datei als die Standardatei des Templates gemeint. Wenn mehrere Kategorien ein und dieselbe alternative Datei bekommen sollen, dann kann man die Bedingung mit or verknüpfen und muss nicht jedes Mal eine komplett neue if-Abfrage schreiben. [quote=“wollstylisten”] 2.) Es reicht doch wenn in der jeweiligen CSS-Datei nur die Farbänderungen enthalten sind oder? Alles andere wird ja aus der Stammdatei genommen, wenn ich es bisher richtig verstanden habe. [/quote] Kommt darauf an. Es muss grundsätzlich die emotion_meintemplate.css Datei plus die Farbänderungen sein. Alternativ kann man den header so umschreiben, dass zuerst immer emotion_meintemplate.css aufgerufen wird und danach noch eine CSS-Datei über die if-Abfrage, in der nur die geänderten Farben sind. Auf jeden Fall muss ein Mal die emotion_meintemplate.css im HTML-Header verlinkt werden, sonst geht es nicht.

Vielen Dank für die schnelle Antwort. Habe jetzt folgendes in der header.tpl geschrieben: {extends file='parent:frontend/index/header.tpl'} {block name="frontend\_index\_header\_css\_screen" append} <link type="text/css" media="screen, projection" rel="stylesheet" href="%7Blink%20file='frontend/_resources/styles/emotion_tutorial.css'%7D">{if $sBreadcrumb[0].id eq 6} <link type="text/css" media="screen, projection" rel="stylesheet" href="%7Blink%20file='frontend/_resources/styles/emotion_tutorial2.css'%7D"> {else} <link type="text/css" media="screen, projection" rel="stylesheet" href="%7Blink%20file='frontend/_resources/styles/emotion_tutorial.css'%7D">{/if} {/block} Und habe z.B. in der emotion_tutorial2.css nur die entsprechenden Farben geändert. Bisher klappt es.

else} <link type="text/css" media="screen, projection" rel="stylesheet" href="%7Blink%20file='frontend/_resources/styles/emotion_tutorial.css'%7D">[/code] das ist überflüssig, schließlich wird diese Datei bereits for der if-Abfrage im Header geladen. So würde alles doppelt geladen und vom Browser interpretiert werden. emotion\_tutorial2.css ergänzt und ändert doch nur die emotion\_tutorial.css aus der Zeile vor der if-Abfrage. Das sind aber Grundlagen von HTML und CSS die fehlen. Wenn da noch mehr Änderungen im CSS/Template gemacht werden sollen, empfehle ich, die zuerst zu lernen und danach mit Änderungen im SMARTY-Template zu beginnen. [quote="wollstylisten"]Vielen Dank für die schnelle Antwort. Habe jetzt folgendes in der header.tpl geschrieben: [code]{extends file='parent:frontend/index/header.tpl'} {block name="frontend\_index\_header\_css\_screen" append} <link type="text/css" media="screen, projection" rel="stylesheet" href="%7Blink%20file='frontend/_resources/styles/emotion_tutorial.css'%7D">{if $sBreadcrumb[0].id eq 6} <link type="text/css" media="screen, projection" rel="stylesheet" href="%7Blink%20file='frontend/_resources/styles/emotion_tutorial2.css'%7D"> {else} <link type="text/css" media="screen, projection" rel="stylesheet" href="%7Blink%20file='frontend/_resources/styles/emotion_tutorial.css'%7D">{/if} {/block}