Contao-Camp 2024
Ergebnis 1 bis 18 von 18

Thema: Styles generieren aus Backend-Werten

  1. #1
    Contao-Nutzer
    Registriert seit
    19.05.2010.
    Beiträge
    170

    Standard Styles generieren aus Backend-Werten

    Ich habe mir tl_content erweitert und aus den neuen Optionen würde ich gerne so etwas generieren und bei dem Element anhängen:
    Code:
    style="background-color: red;"
    Das Ergebnis soll dann so etwas weden:
    Code:
    <div class="ce_text" style="background-color: red;">
    red würde in dem Fall aus dem Backend kommen.

    Gibt es da einen Hook bei dem man den Buffer manipulieren kann oder was wäre ein alternativer Weg?

  2. #2
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    verstehe zwar nicht so recht was das soll mit dem Inline-CSS - du könntest doch die CSS-Klasse "red" vergeben beim Textelement und im CSS das entsprechend abfangen... Es gibt auch Erweiterungen die das für die Redakteure schöner handhabbar macht sofern die sich nicht die Sachen wie red, light-blue, orange oder was auch immer merken können (sollen).

    Oder baust Dir per DCA ein Selectfeld mit Deinen Werten - im Template hast Du dann Zugriff darauf.

  3. #3
    Contao-Nutzer
    Registriert seit
    19.05.2010.
    Beiträge
    170

    Standard

    Danke für die Antwort, es sollte aber Inline-CSS auf diese Weise generiert werden.
    Meine Beschreibung war nur ein einfaches Beispiel für die geplante Vorgehensweise

  4. #4
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    dann DCA-Feld + Anpassung Template

  5. #5
    Contao-Nutzer
    Registriert seit
    19.05.2010.
    Beiträge
    170

    Standard

    Über die entsprechenden Element-Templates sollte das nicht laufen.

    Ich habe da an diese Hooks gedacht:

    https://docs.contao.org/dev/referenc...parseTemplate/
    oder
    https://docs.contao.org/dev/referenc...ntendTemplate/

    Damit lassen sich ja z.B schon Klassen für die Elemente setzen, nur eben das "anhängen" von Inline-CSS hab ich bisher noch nicht hinbekommen bzw. weiß nicht genau welcher Hook dafür genutzt werden könnte/sollte.

  6. #6
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von typomat Beitrag anzeigen
    weiß nicht genau welcher Hook dafür genutzt werden könnte/sollte.
    steht doch als erster Absatz nach der Überschrift...

  7. #7
    Contao-Nutzer
    Registriert seit
    19.05.2010.
    Beiträge
    170

    Standard

    Das schon.

    Aber ich habe bisher noch keinen Weg gefunden, über diese Hooks, das Inline-CSS anzuhängen

  8. #8
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Guck Dir in https://docs.contao.org/dev/referenc...ntendTemplate/ den Inhalt von $buffer an - den Inhalt musst Du ändern ... z.B. mir str_replace

  9. #9
    Contao-Nutzer
    Registriert seit
    19.05.2010.
    Beiträge
    170

    Standard

    ok, hier habe ich das Problem, dass ich noch nicht ganz genau herausgefunden habe, wie ich an die Backend-Werte in dem Hook komme
    Geändert von typomat (10.06.2021 um 09:14 Uhr)

  10. #10
    Contao-Nutzer
    Registriert seit
    19.05.2010.
    Beiträge
    170

    Standard

    ist das dann überhaupt so möglich?

  11. #11
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    wie man an dem Hook sieht, werden die nicht mit übergeben...

  12. #12
    Contao-Nutzer
    Registriert seit
    19.05.2010.
    Beiträge
    170

    Standard

    es muss ja auch nicht dieser Hook sein, ist das denn allgemein machbar?

  13. #13
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    ich würde mal sagen, üblicher Weise macht man das nicht über einen Hook sondern übergibt die DCA-Werte an das Template...

    ... man kann natürlich auch statt einer Brücke so lange Steine schleppen, bis man in Dreier-Hopp übern Bach ist ;-)

  14. #14
    Contao-Nutzer
    Registriert seit
    03.06.2019.
    Beiträge
    158
    Partner-ID
    11715
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ahoi,

    hier könnte Dir der StyleManager ggf. weiterhelfen. Dieser ermöglicht neben dem setzen von Klassen auf beliebigen Elementen auch das ausspielen von eigenen Template-Variablen.

    Ein kleines Beispiel:

    1. Anlegen einer neuen Kategorie: > sm-step-1.png
    Titel: Inline-Style
    Kennung: inlineStyles

    2. Anlegen einer neuen CSS-Gruppe: > sm-step-2.png
    Titel: Color
    Alias: color
    CSS-Klassen: (Deine CSS Werte + Beschreibung)
    Veröffentlichung: (Deine Conent-Elemente wählen in der diese Option vorhanden sein soll)
    Als Templatevariable verwenden: Ja

    3. Template anpassen
    HTML-Code:
    <div class="<?= $this->class ?> block" style="<?=$this->styleManager->get('inlineStyles', ['color']);?>">
       ...
    </div>
    4. Content-Element im Backend aufrufen und Option über den StyleManager auswählen.
    5. Ergebnis bewundern: > sm-step-3.png

    > Dokumentation

    LG Doi

  15. #15
    Contao-Nutzer
    Registriert seit
    19.05.2010.
    Beiträge
    170

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ich würde mal sagen, üblicher Weise macht man das nicht über einen Hook sondern übergibt die DCA-Werte an das Template...
    ok und es gibt aber auch keinen anderen Hook oder etwas anderes bei dem man die DCA-Werte gleich an das Element anhängen kann?

  16. #16
    Contao-Nutzer
    Registriert seit
    19.05.2010.
    Beiträge
    170

    Standard

    Zitat Zitat von Doi Beitrag anzeigen
    hier könnte Dir der StyleManager ggf. weiterhelfen. Dieser ermöglicht neben dem setzen von Klassen auf beliebigen Elementen auch das ausspielen von eigenen Template-Variablen.
    danke.

    mein Anliegen ist ein kleines Beispiel, es könnte auch data-Attribute sein oder etwas anderes was an das Element "angehängt" werden müsste

  17. #17
    Contao-Nutzer
    Registriert seit
    03.06.2019.
    Beiträge
    158
    Partner-ID
    11715
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von typomat Beitrag anzeigen
    danke.

    mein Anliegen ist ein kleines Beispiel, es könnte auch data-Attribute sein oder etwas anderes was an das Element "angehängt" werden müsste
    Was Du letztendlich daraus machst ist Dir ja vollkommen überlassen. Wie Du oben sehen kannst, kannst Du statt alles in das style-Attribute zu schreiben, auch ein data-Attribute befüllen:
    HTML-Code:
    <div class="<?= $this->class ?> block" data-style="<?=$this->styleManager->get('inlineStyles', ['color']);?>">
       ...
    </div>

    Edit:
    Außerdem könntest Du die Werte noch formatieren lassen, bspw. in ein JSON-Format:
    HTML-Code:
    $this->styleManager->prepare('myCategoryIdentifier', ['alias1'])->format("data-slider='%s'", 'json');
    Oder über den Hook styleManagerFormatMethod eine ganz eigene Formatierung erstellen.
    Geändert von Doi (11.06.2021 um 17:22 Uhr)

  18. #18
    Contao-Nutzer
    Registriert seit
    19.05.2010.
    Beiträge
    170

    Standard

    das werde ich mir dann mal anschauen, vielen dank.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •