Ankündigung

Einklappen
Keine Ankündigung bisher.

Eigenes Inhaltselement > Ausgabe des Attribut Dateiauswahl beeinflussen

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

  • Eigenes Inhaltselement > Ausgabe des Attribut Dateiauswahl beeinflussen

    Hi all,

    ich erstelle ein Inhaltslement mit u.a. einem Attribut "Dateiauswahl". Im Attribut Dateiauswahl gebe ich noch an, dass ich die Dateien als Download haben möchte.
    Wenn ich nun im Template mit
    PHP-Code:
    <?php echo $this->field('feldname')->html(); ?>
    die Ausgabe erzeuge, dann funktioniert rein technisch erst mal alles ABER es wird eine Ausgabestruktur erzeugt, die für meine Zwecke nicht passt:

    PHP-Code:
    <div class="ce_files attribute files">
       <
    div class="ce_downloadbox attribute files last block">
         <
    class="download-element ext-pdf">
           <
    a href="spielwiese.html?file=files/downloads/datei.pdf" >datei.pdf <span class="size">(1,0 MiB)</span></a>
         </
    p>
       </
    div>
    </
    div
    Ich brauche die Möglichkeit eigenen Code dazwischen zu packen und normalerweise baue ich mir in solchen Situationen die Struktur über die Ausgabe der rohen Values selbst nach. Das funktioniert hier aber nur bedingt. Das Problem ist, dass ich einen Download-Link benötige. Ich könnte zwar das HTML5 Attribut "download" in den Link packen aber damit kommt mal wieder der gute, alte IE nicht zurecht.
    Ich brauchen einen Aufbau wie Contao ihn selbst auch erzeugen würde:
    PHP-Code:
    http://www.example.com/spielwiese.html?file=/files/downloads/datei.pdf 
    Wenn ich den Link so nachbaue, funktioniert der aber erst mal nicht. Das original Contao-Element Download scheint mit durchlaufen werden zu müssen, denn witzigerweise wenn ich auf der Seite ein Originales Contao Download-Element ablege, dann geht die obige Konstruktion ... Deaktiviere ich sie, geht der Link wieder nicht ...

    Ich vermute die Lösung könnte in einer angepassten
    Code:
    customelement_attr_download.html5
    Datei liegen, in der ich vielleicht die Standardausgabe des Dateiauswahl-Attributs beeinflussen kann? Ich bekomme es aber nicht hin, da eine sinnvolle Ausgabe zu erzeugen.

    Habt ihr Ideen wie ich das lösen könnte? Wie kann ich ggf. in meinem Template mitteilen, dass dieses Contao-Element Download mit benutzt werden soll? Oder denke ich mal wiedr viel zu kompliziert?
    1000 Dank schon mal vorab und LG

  • #2
    Du kannst bzw. musst, wenn du es nicht individuell aufbaust, über Contao ContentDownloads Klasse die Ausgabe erneut durchlaufen lassen. Das ist die Klasse für Inhaltselement Downloads. CE selbst macht es vor im Files-Attribut.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Ja, ich weiss was du meinst. Die ->html Methode legt für einige Attribute (z.B. Bild, Dateien, Tabelle) Contaos Standard-Inhaltselement zugrunde. Dies wiederum setzt auf ce_image, ce_files usw. -> das erzeugt das manchmal ungewollte zusätzlichen Html-Konstrukt.

      In dieser Hinsicht wird CE flexibler werden mit dem nächsten Major-Update. Ich verheirate derzeit Contaos Standard-Inhaltselemente Templates (ce_) als Template für die Attribute. Man kann dann quasi ce_image (oder was auch immer direkt als Attribut-Template wählen.
      Zuletzt geändert von Tim; 18.03.2019, 11:39.
      http://www.premium-contao-themes.com

      Kommentar


      • #4
        Zitat von Tim Beitrag anzeigen
        Du kannst bzw. musst, wenn du es nicht individuell aufbaust, über Contao ContentDownloads Klasse die Ausgabe erneut durchlaufen lassen. Das ist die Klasse für Inhaltselement Downloads. CE selbst macht es vor im Files-Attribut.
        Hi Tim, vielen Dank für Deine Antworten aber ich habe leider keine richtige Idee, was damit gemeint ist :-(.
        Was müsste denn in einem eigenen Template eingetragen werden, damit diese Downloads Klassen durchlaufen werden?

        Kommentar


        • #5
          Du musst halt ein ContentFiles Element von Contao erstellen und über die generate Methode kompilieren lassen.

          (kurz umrissen). Siehe Contaos ContentElement Klasse, ContentFiles Klasse oder auch die Attribute\Files Klasse von CE. Beide gehen diesen Weg.

          $objFiles = new \ContentFiles( DB-RESULT-OBJECT || MODEL );
          echo $objFiles->generate();
          http://www.premium-contao-themes.com

          Kommentar


          • #6
            Hi Tim, danke für Deine wie immer sehr hilfreichen Anregungen! Die Lösung ist jetzt aber doch viel, viel einfacher geworden und liegt in einer angepassten
            Code:
            customelement_attr_download.html5
            . In eurer Doku stand ja, dass innerhalb eines CEs, die entsprechenden Attributklassen jeweils durchlaufen werden. Ergo musste es ja über ein angepasstes Attribut-Template gehen. Ich dachte zuerst ich müsste da die ContentFiles Klasse erstellen aber das wäre doppelt gemoppelt gewesen. Es ist ja schon alles da und deshalb sieht die Lösung so aus: Im Template für das Inhaltselement die Ausgabe des Attributs ganz normal über die html Methode kompilieren lassen:
            PHP-Code:
            <?php echo $this->field('feldname')->html(); ?>
            Dann für das Attribut ein individuelles Attribut-Template erstellen und im Inhaltslement beim Attribut zuweisen. In diesem Inhaltselement den gewünschten Aufbau ganz einfach nachbauen ... z.B.
            PHP-Code:
            <a class="meineKlasse" href="{{page::alias}}.html?file=<?php echo \FilesModel::findByUuid($this->rawValue)->path?>" title="Die Datei <?php echo \FilesModel::findByUuid($this->rawValue)->name?> herunterladen"> <i class="fa fa-download"></i> </a>
            (Mehr muss da nicht drin stehen!) Es kann so einfach sein - Vielen Dank noch mal für die genialen Möglichkeiten der CE-Erweiterung.

            Kommentar


            • #7
              Ich hatte es noch etwas anders verstanden . Schöne Lösung.
              http://www.premium-contao-themes.com

              Kommentar

              Lädt...
              X