Ergebnis 1 bis 2 von 2

Thema: [gelöst] BE: Listenansicht soll nur bestimmte Überschriften/reihen zeigen.

  1. #1
    Contao-Nutzer Avatar von xava
    Registriert seit
    13.06.2012.
    Beiträge
    22

    Standard [gelöst] BE: Listenansicht soll nur bestimmte Überschriften/reihen zeigen.

    TL;DR -> am unteren Ende des Beitrages.

    Hallo zusammen,

    ich arbeite gerade an einer Erweiterung und bin auf folgendes Problem gestoßen, wozu ich leider keine Lösung im Netz/Forum gefunden habe.

    Es gibt eine Status Erweiterung im Backend, in der der User "Text, Bild, Video, Zitat" anlegen kann. Dabei kann immer nur 1 Art gewählt sein pro Datensatz.
    In der Übersicht im Backend soll in einer Liste dargestellt werden: Art, TimeStamp und Vorschau. Diese Vorschau soll unterschiedlich generiert werden, je nach Art.

    Damit ich in der label_callback Funktion auf die entsprechenden Daten zugreifen kann, habe ich in meinem Label Eintrag alle Felde hinzugefügt.
    Das führt natürlich dazu, dass alle Spalten angezeigt werden.

    Das ich nur die drei gewollten Spalten an Werten zurück bekomme habe ich mit folgendem geschafft.
    PHP-Code:
     return array_slice($args03); 
    Aber die Überschrift bekomme ich so nicht eingedampft und bräuchte Ideen.

    -> Gibt es eine andere Möglichkeit $args alle meine Felder mitzugeben, auch wenn sie in Label->Fields nicht drin stehen?
    -> Gibt es eine clevere Möglichkeit, das gewünschte Verhalten zu erreichen?

    Mein Label Code
    PHP-Code:
    //Label
        
    'label' =>
        [
          
    'showColumns'     => true,
          
    'fields'          => ['type''tstamp''custom''text_de''text_en''quote''image'],
          
    'label_callback'  => ['tl_heartbeat''generateLabels'],
        ], 
    Mein label_callback Code
    PHP-Code:
    public function generateLabels($row$labelDataContainer $dc$args)
      {
        
    $args[1] = date('Y-d-m H:i'$args[1]);

        switch (
    $args[0])
          {
          case 
    1:
             
    $args[2] = 'Do something';
             break;
         case 
    2:
             
    $args[2] = 'Do something else';
             break;
          default:
             
    $args[2] = 'default';
             break;
          }

        return 
    array_slice($args03);
      } 
    Vielen Dank im voraus.

    TL;DR -> x Felder werden im label_callback übergeben zur Erstellung eines Spaltenwertes. Es sollen aber nicht x Spaltenüberschriften angezeigt werden, sondern y.
    Geändert von xava (31.08.2017 um 11:08 Uhr) Grund: Eigene Lösung implementiert.

  2. #2
    Contao-Nutzer Avatar von xava
    Registriert seit
    13.06.2012.
    Beiträge
    22

    Standard [Gelöst]

    Ich habe mein Problem wie folgt gelöst, freue mich aber, falls jemand eine elegantere Lösung hat.

    Ich habe alle Felder hinzugefügt, die ich benötige.
    PHP-Code:
    //Label
        
    'label' =>
        [
          
    'showColumns'     => true,
          
    /* symbolHeader is an emptyField for <th> Styling in Contao Backend */
          
    'fields'          => ['type''tstamp''custom''symbolHeader','text_de''text_en''quote_de''quote_en'],
          
    'label_callback'  => ['tl_heartbeat''generateLabels'],
        ], 
    Schneide das Ergebnis auf die ersten drei Felder zurecht.
    PHP-Code:

    public function generateLabels($row$labelDataContainer $dc$args)
      {
        ...
        
       
    /*Gib nur die ersten 3 Werte im Array zurück */
        
    return array_slice($args,0,3); 
      } 
    Eine CSS für das Backend in der config.php eingebunden. In dieser gebe ich allen th Tags außer den ersten 4 ein display: none;.
    Und Voila werden nur die Überschriften angezeigt, die ich möchte.

    Code:
    th:not(:nth-child(-n+4)){
        display: none;
    }

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
  •