Ankündigung

Einklappen
Keine Ankündigung bisher.

Sortierung Dateiliste nach Metadaten "Titel"

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sortierung Dateiliste nach Metadaten "Titel"

    Moin Forum,

    wir haben einen CC der zu Dateien, eine ganze Reihe von zusätzlichen Informationen definiert. Eine Ausgabeliste im Frontend erzeugt eine gefilterte Auflistung (zum Download) dieser Dateien. Die Sortierung der einzelnen Datensätze erfolgt bisher über ein Feld "name" im CC. Da sich dieses aber teilweise erheblich vom Titel in den Metadaten unterscheidet, wollen wir nun die Sortierung entsprechend auf diese umstellen.

    Gibt es einen eleganten Weg dies zu tun?

    Merci!

  • #2
    Du kannst ein eigenes Feld dafür spendieren, wie es bei normalen Bild-Inhaltselementen ist. Richtig gut wird es, wenn du das Feld via onsave_callback aus den Daten der Dateiverwaltung speist - falls leer.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Sorry, war etwas offline. Gegen das eigene Feld hatten wir uns zuvor bewusst entschieden, da in dieser Umgebung strikt nur die Metadaten in der Dateiverwaltung gepflegt werden sollen. Gut, dann muss ich wohl vorher eine extra Runde drehen um eine VorabSortierung zu bekommen.

      Die Idee mit dem Einlesen der Metadaten beim Speichern ist aber vielleicht gar nicht so schlecht. Du hast nicht zufällig einen Code-Schnipsel zur Hand, der sowas mal zeigt? <GanzLiebGuck />

      Kommentar


      • #4
        Ähh... naja, muss ich selbst bauen. Die tl_content Klasse hatte ähnliche konstrukte. Imgrunde ist es ja ein normaler save_callback für ein Feld (quasi wie Alias-Felder) oder ein onsubmit_callback für den Datensatz. Ich schau mal, dass ich da was zwischendurch gefummelt kriege.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Als kleines Beispiel, wie man es machen kann.

          Ich würde den onsubmit_callback nutzen, weil dann in jedem Fall alle Felder berücksichtigt sind.

          Ich pointe hier auf ein Bild-Feld "bild", lese dessen Meta Daten aus und übergebe den Alternativen Text an das Bild "bild_alt", falls dieses leer gespeichert wird. Am Ende den aktuellen Datensatz speichern, falls es was zum Speichern gibt.

          Bei den Meta-Daten muss man schauen. Die sind ggf. mehrsprachig. Dann muss man sich entscheiden

          dcaconfig.php

          Code:
          $GLOBALS['TL_DCA']['cc_test']['config']['onsubmit_callback'][] = array('myClass','myOnSubmitCallback');
          
          if( !class_exists('myClass') )
          
          {
              class myClass
              {
                  public function myOnSubmitCallback($objDC)
                  {
          
                      $objFile = \Contao\FilesModel::findByPk( $objDC->activeRecord->bild );
          
                      if( $objFile === null )
                      {
                          return;
                      }
          
                      // meta data
                      $arrMeta = \Contao\StringUtil::deserialize($objFile->meta);
                      // meta data is structured by language
                      $arrMeta = $arrMeta[ $GLOBALS['TL_LANGUAGE'] ];
          
                      $arrSet = array();
                      if( empty($objDC->activeRecord->bild_alt) )
                      {
                          $arrSet['bild_alt'] = $arrMeta['alt'];
                      }
          
                      if( !empty($arrSet) )
                      {
                          \Contao\Database::getInstance()->prepare("UPDATE ".$objDC->table." %s WHERE id=?")->set( $arrSet )->execute($objDC->id);
                      }
                  }
              }
          
          }
          Zuletzt geändert von Tim; 24.10.2022, 11:49.
          http://www.premium-contao-themes.com

          Kommentar


          • #6
            Wow, echt super - Das funktioniert wunderbar und danke für den lehrreichen Beispiel-Code. Das hilft bestimmt auch den anderen Kollegen!

            Kommentar

            Lädt...
            X