Contao-Camp 2024
Ergebnis 1 bis 7 von 7

Thema: Eigene Klasse im Item des MetaModels eingeben

  1. #1
    Contao-Nutzer
    Registriert seit
    02.04.2020.
    Beiträge
    15

    Standard Eigene Klasse im Item des MetaModels eingeben

    Hallo. Hat jemand Ahnung ob eine Möglichkeit gibt eine eigene CSS Klasse für Item hinzufügen?

    Beispielsweise habe ich solche Struktur:

    Aufbau 1
    • Person 1
      - Name
      - Vorname
      - Geschlecht
    • Person 2
      - Name
      - Vorname
      - Geschlecht


    Mir ist klar, dass eine CSS Klasse zu "Aufbau 1" anlegen kann (bei der Erstellung eines neuen Artikels -> bei der Auswahl des Moduls "MetaModels List"). Ich möchte aber auch Einfluss auf die einzelnen Elemente "Person 1" oder "Person 2" nehmen. Hat jemand eine Idee?


    Danke im Voraus!

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

    Standard

    da gibt es verschiedene Ideen...

    Vorab: ich nehme an, "Person n" ist immer ein Datensatz

    * Du kannst per CSS die Position in einen Selector setzen ntes-Element
    * kannst z.B. den Alias auch als Klasse verwenden
    * eigenes Attribut Text für Eingabe Klasse
    * Attribut Checkbox z.B. für "Top"-Person
    * das an einer anderen Eigenschaft fest machen z.B. "if ($person_typ == 'Oma'): 'sternchen'"
    * ...

  3. #3
    Contao-Nutzer
    Registriert seit
    02.04.2020.
    Beiträge
    15

    Standard

    Hi zonky, danke für deine schnelle Rückmeldung

    Zitat Zitat von zonky Beitrag anzeigen

    Vorab: ich nehme an, "Person n" ist immer ein Datensatz
    ja, genau! Die Idee hinter ist, mehrere Personen "Premium" zu markieren.


    * Attribut Checkbox z.B. für "Top"-Person
    Problem ist nur, dass Attribute immer innerhalb des Element gezeigt werden.
    Im Anhang findest du meine echte MM-Struktur. Rotes Box = Person 1 (Datensatz), Grün = Aufbau 1, Blau = Hier hätte ich gerne CSS Klasse "premium-box" o. Ä.

    contao_mm.png

    Es geht mir darum, wenn ich ein Element "Premium" habe, wird sich auch Schriftfarbe für z.B. Name geändert.


    --
    * Du kannst per CSS die Position in einen Selector setzen ntes-Element
    * kannst z.B. den Alias auch als Klasse verwenden
    Ich weiß aber nie wo (welches in der Reihe) das Premium-Element steht.


    * das an einer anderen Eigenschaft fest machen z.B. "if ($person_typ == 'Oma'): 'sternchen'"
    Hmmm... in welcher Datei?

    Sorry für so viel Fragen, bin erst seit ein paar Wochen ja richtig mit Contao beschäftigt.
    Geändert von JarekEikona (03.04.2020 um 15:31 Uhr)

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

    Standard

    leg Dir ein eigenes Template für das Rendersetting an (metamodels_prerendered_person_list.html5)

    da kannst Du schalten und walten, wie Du möchtest.

    Für Premium würde ich mit einer Checkbox arbeiten - du könntest dann auch prima danach filtern.

    Tipp für Template: Handbuch > Kochbuch > Debug

  5. #5
    Contao-Nutzer
    Registriert seit
    02.04.2020.
    Beiträge
    15

    Standard

    Danke! Es scheint alles richtig zu sein. Ich habe "metamodels_prerendered.html5" dupliziert, ins Template-Ordner angelegt, umbenannt und Inhalte ein bisschen geändert. Wie hier: https://metamodels.readthedocs.io/de...templates.html

    Für die Zukunft: wenn du ein Checkbox "premium" hast, dann reicht es nur das Code ins Temlate eingeben:
    Werden alle Attribute die nach dem "premium" im Item kommen mit der Klasse "field_premium" gezeigt. Vielleicht nicht genau dass was wollte, aber schon besser als nichts.

    PHP-Code:
    <?php $premiumClass ''?>
    // <?php foreach ($arrItem['attributes'] as $field => $strName): ?>
    // ...
    <?php if ($field == 'premium'
    {
       
    $premiumClass 'field_premium';
     };
    ?>
    <div class="field <?= $field ' ' $premiumClass?> ">

    Hat jemand vielleicht einen Tipp für Anfänger in php wie ich auch die definierte Variable $premiumClass weiter nach oben verschieben kann? Über die foreach Schleife...
    VG

  6. #6
    Contao-Nutzer
    Registriert seit
    02.04.2020.
    Beiträge
    15

    Standard

    Done!

    Code für jeden der Interesse hat:
    PHP-Code:
    //<?php foreach ($this->data as $arrItem): ?>
        <?php $premiumClassItem ''?>
    //    <?php $this->block('item'); ?>

            <?php
            
    if ($arrItem['text']['premium'] == 1)
            {
                echo 
    'ok';
                
    $premiumClassItem 'field_premium';
            };
            
    ?>
        <div class="item <?= $arrItem['class'] . ' ' $premiumClassItem ?>">
    Jetzt endlich mein Item ist Premium.
    Das Thema kann schließen

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

    Standard

    PHP-Code:
    <?php foreach ($this->data as $arrItem): ?>
        <?php $this->block('item'); ?>
        <div class="item <?= $arrItem['class'?><?php if($arrItem['text']['premium']): ?> field_premium<?php endif; ?>">
    ...
    btw: Checkbox hat den Vorteil, dass Du im BE in der Listenansicht ein Icon einblenden kannst - Standard ist das "grüne Auge" kannst aber für "1 und 0" auch eigene Icons wie Sternchen gelb/grau verwenden

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
  •