Einkaufswelt-Element Einstellungen als LESS Variable

Hallo Zusammen,

ich arbeite aktuell an einem eigenen Element für die Einkaufswelt. Ich bin soweit auch schon relativ weit gekommen, jedoch habe ich jetzt das Problem, dass ich nicht weiß wie ich die Inhalte der einzelnen Textfelder usw. als LESS-Variable speichern kann. Ich habe bereits versucht mit via Hook an die SaveAction der Elemente dran zu hängen, aber hier fehlt mir der Ansatz wie das funktionieren könnte. Ich habe mir dazu bereits den Weg über normale Plugins angeschaut mit onCollectLessFiles, aber ich brauche ja ein Update bzw. Erstellen der Less Variable wenn im Backend das Element bearbeitet und gespeichert wird.

Hat vielleicht einer von Euch eine Idee oder einen Tipp wie dies umzusetzen wäre, sodass ich die Einstellungen als LESS Variable verwenden kann?

Über Hilfe und Rückmeldungen wäre ich sehr dankbar.

LG

Ernste Frage: Warum muss du dynamisch generierten Content in deine Less-File rein? Hast du mal ein Beispiel dass dein Vorhaben bzw. das Endergebnis etwas veranschaulicht?

Es geht z.B. darum, dass man im Backend u.a. via ColorPicker eine Hintergrundfarbe wählen kann oder die Font-Family angeben kann. Also sprich man kann das Element durch die Einstellungen optisch verändern. Daher wäre meine Idee gewesen die Einstellungen in der Less-Datei als Variable zu hinterlegen, um somit die Anpassungen vorzunehmen.

Klar lässt sich das via Smarty als Inline-Style lösen, aber ist das good practise?

Klar lässt sich das via Smarty als Inline-Style lösen, aber ist das good practise?

In diesem Fall ja. Das ist genau der Einsatzzweck für Inline-Styles. 
Man hört ja immer „Niemals Inline-Styles verwenden!!!“, da es in 99% der Fälle zutrifft. Hier aber nicht, da die Daten von Nutzer kommen und nur für dieses spezielle Element benötigt werden. (edit: das ist schon richtig. Nutze inline-stylesheets. Die sind hier ok.)

Überleg mal wie viel Sinn es macht, die Werte hart in ein Less-File zu kompilieren. Wie würdest du das machen? Denke mal an Abhängigkeiten wie Subshops (mit eigenen Lessfiles aber evtl. der gleichen Einkaufswelt), jedes mal neu kompilieren, sobald ein Element platziert/geändert wurde,…). Das ist viel zu umständlich. Da sollte man den einfacheren und einfacher wartbaren Weg nehmen.

Viele Grüße

edit: Btw: ich rede von einem Inline-Stylesheet, nicht inline-styles á la . Sorry für die Verwirrung.
Eher sowas wie #ElementIdentifier { /* hier kommen die Styles */ }

edit2: Hier ist eine Beispielimplementierung. Als Elementidentifier kann man {$Data.objectId} benutzen: https://github.com/shopware/shopware/blob/5.4/themes/Frontend/Bare/widgets/emotion/components/component\_category\_teaser.tpl#L26

@simkli‍  Vielen Dank für die ausführliche Antwort! Wo ich jetzt darüber nachdenke, hast du definitiv recht. Ich bin noch relativ neu in Shopware und dachte es wäre eine optimale Lösung, aber so wie du das beschrieben hast, ergibt das definitiv Sinn. Vielen Dank auch für das Beispiel, an welchem ich mich jetzt orientieren kann.

VG

 

Das ging mir am Anfang ganz genau so. ^^