Ergebnis 1 bis 40 von 40

Thema: Downloads um Klasse der Unterordner erweitern

  1. #1
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Beitrag Downloads um Klasse der Unterordner erweitern

    Ich habe verschiedenen Dateien in einer bestimmten Ordnerstruktur und möchte die Unterordner quasi als Kategorie als Klasse vergeben, um diese später filtern zu können.
    Dazu versuche ich das "downloads.html.twig" Template anzupassen, komme allerdings nicht weiter.

    1. Sind die Unterordner irgendwo als Variable verfügbar? Bisher hab ich einfach den URL-Pfad mit Twig "split" aufgeteilt. Eventuell gibt es da ja eine bessere Lösung
    2. Wie kann ich den Attributen eines einzelnen Downloads eine Klasse hinzufügen? Das müsste ja mit "attrs()" gehen, aber ich weiß nicht welchem Block/Component im Template ich das geben muss.

    Gibt es generell eine Möglichkeit, in das Base-Template reinzuschauen, um zu sehen, was in den jeweiligen Blöcken drin ist?

    Vielleicht hat hier ja jemand ein bisschen mehr Ahnung als ich
    Danke schonmal im Vorraus

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

    Standard

    Contao gibt bei CE Downloads m. E. eh nur einen Ordner bzw. Ordnertiefe aus... für Rekursiv: https://github.com/hofff/contao-recu...ownload-folder

  3. #3
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    7.080
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Was in den einzelnen Core-Templates drin steht siehst Du am besten auf Github core-bundle/contao/templates/twig
    Geändert von mlweb (27.11.2023 um 09:33 Uhr)
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  4. #4
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Zitat Zitat von mlweb Beitrag anzeigen
    Was in den einzelnen Core-Templates drin steht siehst Du am besten auf Github core-bundle/contao/templates/twig
    Das hilft schon mal weiter, danke!

    Aus dem Template da kann ich entnehmen, dass so die Klassen den einzelnen Elementen zugeteilt werden: (wobei ich nicht verstehe warum "{{-" statt "set" benutzt wird)
    "{% block list_item_attributes %}
    {{- attrs(list.item_attributes|default).addClass(['download-element', "ext-#{item.file.extension(true)}"]) -}}
    {% endblock %}"

    Eigentlich sollten ja mit "|default" die Werte übernommen werden, aber wenn ich
    "{{- attrs(list.item_attributes|default).addClass('test ') -}}"
    schreibe, verliert es die anderen Klassen.

    Und ich würde gerne noch ein Attribut hinzufügen, allerdings kommt da weder Attribut noch Klasse wenn ich
    "{{- attrs(list.item_attributes|default).setAttribute(' data-category', 'test') -}}"
    hinzufüge.


    Hat da jemand eine Idee wie ich das hinbekomme?

  5. #5
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Ich hab es geschafft ein Attribut hinzuzufügen.
    Code:
    {% block list_item_attributes %}
            {{parent()}}
            {{- attrs(list.item_attributes|default).set('data-category','test') -}}  
    {% endblock %}
    Das Problem ist jetzt aber, dass ich jedem "<li>" Item Attribute entsprechend des Pfades geben will.

    Also das Ziel ist bsp.:
    HTML-Code:
    <ul>
    <li data-category="ordner1, ordner2">Datei 1</li>
    <li data-category="ordner3">Datei 2</li>
    </ul>
    Aber ich bekomme es nicht hin in einem Block sowohl den Pfad auszulesen als auch die Attribute hinzuzufügen.
    Bin ich da einfach zu doof oder geht das gar nicht?

  6. #6
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Wäre sehr hilfreich, wenn jemand hier einen Anstoß hätte.

    Ich komme da leider nicht weiter.

    Oder gibt es vielleicht generell einen besseren Weg (selbstgebautes Element?) um einen Download-Bereich umzusetzen?

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

    Standard

    * wie ist Deine Ordnerstruktur?
    * welche Datei liegt wo und gibt es Dateien doppelt?
    * was soll wo wie dargestellt werden?

  8. #8
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    7.080
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Echte Kategorien vielleicht. Ich bin kein Entwickler, aber ich würde über die Zuordnung der einzelnen Downloadelemente zu Kategorien nachdenken. Meta Models oder Catalog Manager sind da sicher eher mit Kanonen auf Spatzen geschossen, aber ein zusätzliches Feld nach dem man später filtern kann - das wäre so meine grobe Idee.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




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

    Standard

    Zitat Zitat von mlweb Beitrag anzeigen
    Echte Kategorien vielleicht.
    ... vielleicht

  10. #10
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    7.080
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Naja erwollte ja die Ordnerstruktur als Kategorie nutzen. Ich würde das eher nicht in Erwägung ziehen und lieber bewusst Kategorien auswählen lassen. Ist aber vielleicht eine "Geschmacksfrage"
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




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

    Standard

    Zitat Zitat von mlweb Beitrag anzeigen
    Naja erwollte ja die Ordnerstruktur als Kategorie nutzen.
    soweit o.k. - was (mich) irritiert ist

    Code:
    <li data-category="ordner1, ordner2">Datei 1</li>
    * selbe Datei in zwei Ordnern? wenn ja, eher suboptimale Idee...
    * ist Ordner 2 Kindordner von Ordner 1? wenn ja, dann siehe #2

    Zudem müssten die Ordner in "natürlicher Schreibweise" gehalten werden - also inkl. Sonderzeichen, Leerzeichen usw. - auch eher suboptimale Idee...

    man könnte die Kategorie-Angaben auch in der Dateiverwaltung im Feld z. B. Bildunterschrift einfügen und das über ein eigenes Template abfangen

    Als "kleine Lösung" wäre ein RST-CE möglich mit Dateiauswahl in der Liste (Typ 'list') und "oben drüber" eine Eingabe der Kategorien inkl. Label und Alias - das kann man bei jeder Datei als Checkboxauswahl anzeigen lassen. Bei RST-CE muss man aber bei Änderung der Kategorien 1x speichern, damit das bei den Bild-Feldern da ist.

    MM geht natürlich - siehe https://www.e-spin.de/metamodels-vor...renz-2017.html Folie 10 ff.

  12. #12
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    * wie ist Deine Ordnerstruktur?
    * welche Datei liegt wo und gibt es Dateien doppelt?
    * was soll wo wie dargestellt werden?
    Dateien gibt es nicht doppelt. Die Ordnerstruktur ist quasi
    • Kategorie 1
      Unterkategorie 1
      Unterkategorie 2
    • Kategorie 2


    Man soll die Möglichkeit haben, die Dateien einfach in den entsprechenden Ordner zu packen, ohne nochmal groß jede Datei bearbeiten zu müssen.


    Dargestellt werden soll das dann auf einer Seite, wo man die ganzen Dateien filtern (ich benutze da Filterizr) und runterladen können soll.


    Aber eventuell ist da meine Herangehensweise doch eine falsche und sowas wie MetaModels oder Catalog Manager (danke für die Hinweise) wäre die bessere Variante. Wäre voraussichtlich auch performanter.
    Geändert von feG3 (30.11.2023 um 08:26 Uhr)

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

    Standard

    Zitat Zitat von feG3 Beitrag anzeigen
    Man soll die Möglichkeit haben, die Dateien einfach in den entsprechenden Ordner zu packen, ohne nochmal groß jede Datei bearbeiten zu müssen.
    dann gilt m. E. alles das, was ich in #11 geschrieben habe ohne das erste "*"

  14. #14
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    dann gilt m. E. alles das, was ich in #11 geschrieben habe ohne das erste "*"
    Über die Bildunterschrift könnte das natürlich auch funktionieren.

    Glaubst du es wäre besser MetaModels/Catalog Manager zu benutzen? Wenn es jetzt z.B. 200 Dateien sind, wäre das Downloads-Element vermutlich etwas langsam oder? Weil ja alle geladen werden müssen und es kein dynamisches Nachladen gibt.

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

    Standard

    Bei MM (oder auch CM) würde man bei der Menge sicher eine Paginierung einbauen und dann die Filterung nicht per JS machen, sondern mit den Bordmitteln der beiden Erweiterungen. Damit gibt es keine Probleme bei der Performance.

    Mit den beiden Sachen hast Du natürlich einen Mehraufwand bei der Einrichtung - am Ende dann aber auch mehr Möglichkeiten bei der Filterung/Suche wie z. B. neben Kategorien auch Freitextsuche oder Dateimerkmalen... bei dem Beispiel aus dem Vortrag zur Lufthansa ist auch https://metamodels.readthedocs.io/de...extractor.html eingebaut, womit man Meta-Daten aus der Datei für die Suche übernehmen kann.

    Eine Möglichkeit ist mir noch eingefallen - ist aber auch etwas "hacky": Bei einigen Projekten gesehen, dass das News-Modul für solche Sachen umgebogen wurde (z. B. Portfolio), d. h. jeder Newseintrag besteht nur aus dem (Teaser)-Bild; für die Filterung setzt Du CSS-Klassen oder verwendest eine der Erweiterungen für die News-Kategorisierung.

  16. #16
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Jetzt ist mir grade noch ein anderes Problem aufgefallen. Meine Contao Installation ist Contao 5.2.6 mit Php 8.2. MetaModels ist damit gar nicht kompatibel.

    Kann ich das irgendwie umgehen und es manuell trotzdem installieren?

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

    Standard

    Zitat Zitat von feG3 Beitrag anzeigen
    Kann ich das irgendwie umgehen und es manuell trotzdem installieren?
    Leider nein - siehe https://now.metamodel.me/de/aktuelle...hre-metamodels "Wohin geht die Reise?" ... auch wenn es aktuell schon ein fertiges MM für C5 gäbe, wäre es sicher noch nicht frei verfügbar - Stichwort "EAP"

  18. #18
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Das ist natürlich ungünstig.

    Kann man ohne Probleme von 5.2 auf 4.13 downgraden, wenn man keine Erweiterungen installiert hat? Oder würde das zu Problemen führen?

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

    Standard

    kann man mit einer Kopie testen... aber auch für MM 2.3 für C4.13 gilt zu beachten, das das noch im "EAP-Modus" steckt

  20. #20
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Bei der Kopie werden komischerweise die Inhalte erst angezeigt, wenn ich in die entsprechenden Elemente gehe und sie nochmal speichere.

    Aber auch blöd, dass das noch in EAP-Modus ist, dann muss ich mir doch was anderes einfallen lassen. Trotzdem vielen Dank.

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

    Standard

    Vom Vortrag zur CK23 gibt es einen Zugang zu MM 2.3 bis zum Januar... Attribut Datei und Einfachauswahl sind mit frei geschaltet

    siehe https://github.com/e-spin/vortrag-contao-konferenz-2023

  22. #22
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Hab jetzt mal die tl_files um ein weiteres Feld erweitert in der man die Kategorien eintragen kann.
    Und auch mal testweise in der config hinterlegt, das alte ce_downloads.html5 Template zu verwenden.

    Wenn ich mir da die Datei ausgeben lasse, ist das von mir angelegte Feld gar nicht enthalten.

    Weiß jemand woran das liegt? Muss ich noch irgendwo konfigurieren, dass das mit geladen wird?

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

    Standard

    guck Dir mal die Erweiterung an https://github.com/Tastaturberuf/con...yright-bundle/ - da sollte alles nötige zu finden sein

    Ohne Deine Quelltextdateien wirds schwer die Sache nachzuvollziehen

  24. #24
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    guck Dir mal die Erweiterung an https://github.com/Tastaturberuf/con...yright-bundle/ - da sollte alles nötige zu finden sein

    Ohne Deine Quelltextdateien wirds schwer die Sache nachzuvollziehen
    Ich hab mich eher daran orientiert: https://docs.contao.org/dev/getting-started/dca/

    tl_files.php:
    PHP-Code:
    <?php
    use Contao\CoreBundle\DataContainer\PaletteManipulator;

    $GLOBALS['TL_DCA']['tl_files']['fields']['filterCategories'] = [
        
    'label' => &$GLOBALS['TL_LANG']['tl_files']['filterCategories'],
        
    'inputType' => 'text',
        
    'sql' => ['type' => 'string''default' => ''],
    ];

    $GLOBALS['TL_DCA']['tl_files']['fields']['downloadCounter'] = [
        
    'label' => &$GLOBALS['TL_LANG']['tl_files']['downloadCounter'],
        
    'exclude' => true,
        
    'inputType' => 'text',
        
    'eval'      => array('readonly'=>'readonly'),
        
    'sql'  => "varchar(32) NOT NULL default '0'"
    ];

    PaletteManipulator::create()
        ->
    addField('filterCategories''meta'PaletteManipulator::POSITION_APPEND)
        ->
    addField('downloadCounter''meta'PaletteManipulator::POSITION_APPEND)
        ->
    applyToPalette('default''tl_files');

    Im ce_downloads.html5 Template hab ich mir dann mal die TemplateVars ausgeben lassen und würde vermuten dass die Felder da auftauchen (Wird in der Doku ja auch einfach mit $this->location ausgegeben)
    Aber dort fehlen die Felder einfach.
    Bildschirmfoto 2023-12-08 um 14.32.49.png

  25. #25

  26. #26
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Bekomme das grade nicht zum Laufen.

    Aber die Frage ist, warum geht das in der Doku immer ohne sowas und bei mir nicht? Wurde da in Contao 5 wieder was umgestellt, dass es so nicht geht?

  27. #27
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Was genau meinst du hier?
    » sponsor me via GitHub or PayPal or Revolut

  28. #28
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Was genau meinst du hier?
    In der Doku (z.B hier https://docs.contao.org/dev/getting-started/dca/) wird einfach nur das dca erweitert und dann kann man ohne weitere Konfiguration im Template auf die angelegte Variable zugreifen.

    Bei mir steht die registrierte Variable allerdings nicht zur Verfügung.


    Im Quellcode von Contao seh ich in der ContentDownloads.php (https://github.com/contao/contao/blo...tDownloads.php) dass es dort zusammengesetzt wird und vermutlich deshalb keine neuen Werte automatisch übernommen werden:
    PHP-Code:
    // Add the image
                    
    $files[$objFiles->path] = array
                    (
                        
    'id'        => $objFiles->id,
                        
    'uuid'      => $objFiles->uuid,
                        
    'name'      => $objFile->basename,
                        
    'title'     => StringUtil::specialchars(sprintf($GLOBALS['TL_LANG']['MSC']['download'], $objFile->basename)),
                        
    'link'      => $arrMeta['title'] ?? null,
                        
    'caption'   => $arrMeta['caption'] ?? null,
                        
    'href'      => $strHref,
                        
    'filesize'  => $this->getReadableSize($objFile->filesize),
                        
    'icon'      => Image::getPath($objFile->icon),
                        
    'mime'      => $objFile->mime,
                        
    'meta'      => $arrMeta,
                        
    'extension' => $objFile->extension,
                        
    'path'      => $objFile->dirname,
                        
    'previews'  => $this->getPreviews($objFile->path$strHref),
                        
    'mtime'     => $objFile->mtime,
                    ); 
    Wie kann ich das um mein eigenes Feld erweitern?
    Geändert von feG3 (08.12.2023 um 15:28 Uhr)

  29. #29
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Variablen aus dem DCA kommen nicht einfach so in Templates an. Darum kümmern sich immer die jeweiligen Inhaltselemente oder Module.
    » sponsor me via GitHub or PayPal or Revolut

  30. #30
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Variablen aus dem DCA kommen nicht einfach so in Templates an. Darum kümmern sich immer die jeweiligen Inhaltselemente oder Module.
    Das heißt in der Doku wurden einfach die nötigen Zwischenschritte weggelassen?

    Und wie kann ich das Inhaltselement dann erweitern?

  31. #31
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Zitat Zitat von feG3 Beitrag anzeigen
    Das heißt in der Doku wurden einfach die nötigen Zwischenschritte weggelassen?
    Hier ist ein Beispiel in der Dokumentation: https://docs.contao.org/dev/framewor...ments/#example

    Da wird die Variable "text" aus dem Model (= ein Feld aus dem DCA auf dem das Model basiert) an das Template übergeben.

    Tatsächlich musst das aber so nicht machen, wenn du vom Abstract erbst, da alle Daten des Models automatisch an das Template übergeben werden.



    Zitat Zitat von feG3 Beitrag anzeigen
    Und wie kann ich das Inhaltselement dann erweitern?
    Inhaltselemente basieren auf einen Eintrag aus tl_content. Wenn du ein Feld im tl_content DCA hinzufügst, würdest du dieses Feld daher auch im Template zur Verfügung haben (siehe die Erklärung zuvor).

    In deinem Fall hast du aber tl_files erweitert. Ob und wie das ggf. an ein Temlate übergeben wird, obliegt dann einzig und allein dem jeweiligen Controller (also dem Inhaltselement).
    » sponsor me via GitHub or PayPal or Revolut

  32. #32
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Hier ist ein Beispiel in der Dokumentation: https://docs.contao.org/dev/framewor...ments/#example

    Da wird die Variable "text" aus dem Model (= ein Feld aus dem DCA auf dem das Model basiert) an das Template übergeben.

    Tatsächlich musst das aber so nicht machen, wenn du vom Abstract erbst, da alle Daten des Models automatisch an das Template übergeben werden.



    Inhaltselemente basieren auf einen Eintrag aus tl_content. Wenn du ein Feld im tl_content DCA hinzufügst, würdest du dieses Feld daher auch im Template zur Verfügung haben (siehe die Erklärung zuvor).

    In deinem Fall hast du aber tl_files erweitert. Ob und wie das ggf. an ein Temlate übergeben wird, obliegt dann einzig und allein dem jeweiligen Controller (also dem Inhaltselement).
    Das heißt es könnte automatisch funktionieren wenn ich statt tl_files zu erweitern, die Palette "image" in tl_content erweitere?

  33. #33
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Das ist ja nicht das was du machen möchtest, oder? Ich dachte du willst abhängig von den Daten in tl_files etwas an der Ausgabe des Download(s) Inhaltselementes ändern.

    Dazu musst du rausfinden wie das Download(s) Inhaltselement funktioniert, welche Daten es an die Templates übergibt, wie du die Templates entsprechend erweitern kannst oder die Daten entsprechend in die Templates bekommst.
    » sponsor me via GitHub or PayPal or Revolut

  34. #34
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Zitat Zitat von feG3 Beitrag anzeigen
    Das heißt es könnte automatisch funktionieren wenn ich statt tl_files zu erweitern, die Palette "image" in tl_content erweitere?
    Ne, das ist ja auch Quatsch. Muss ja schon die tl_files sein.

    Das heißt dann, dass ich das Inhaltselement/den Controller erweitern muss?

    Ich habe nur leider keine Ahnung wie

  35. #35
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Wie ich dir schon per PM geschrieben habe ich weiße ich auch nicht ohne Weiteres, was genau hier zu tun ist.
    » sponsor me via GitHub or PayPal or Revolut

  36. #36
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das ist ja nicht das was du machen möchtest, oder? Ich dachte du willst abhängig von den Daten in tl_files etwas an der Ausgabe des Download(s) Inhaltselementes ändern.

    Dazu musst du rausfinden wie das Download(s) Inhaltselement funktioniert, welche Daten es an die Templates übergibt, wie du die Templates entsprechend erweitern kannst oder die Daten entsprechend in die Templates bekommst.
    Das hab ich vorhin in einem Edit geschrieben, da wird es zusammengesetzt:

    Im Quellcode von Contao seh ich in der ContentDownloads.php (https://github.com/contao/contao/blo...tDownloads.php) dass es dort zusammengesetzt wird und vermutlich deshalb keine neuen Werte automatisch übernommen werden:
    PHP-Code:
    // Add the image
                    
    $files[$objFiles->path] = array
                    (
                        
    'id'        => $objFiles->id,
                        
    'uuid'      => $objFiles->uuid,
                        
    'name'      => $objFile->basename,
                        
    'title'     => StringUtil::specialchars(sprintf($GLOBALS['TL_LANG']['MSC']['download'], $objFile->basename)),
                        
    'link'      => $arrMeta['title'] ?? null,
                        
    'caption'   => $arrMeta['caption'] ?? null,
                        
    'href'      => $strHref,
                        
    'filesize'  => $this->getReadableSize($objFile->filesize),
                        
    'icon'      => Image::getPath($objFile->icon),
                        
    'mime'      => $objFile->mime,
                        
    'meta'      => $arrMeta,
                        
    'extension' => $objFile->extension,
                        
    'path'      => $objFile->dirname,
                        
    'previews'  => $this->getPreviews($objFile->path$strHref),
                        
    'mtime'     => $objFile->mtime,
                    ); 
    - - - Aktualisiert - - -

    Zitat Zitat von Spooky Beitrag anzeigen
    Wie ich dir schon per PM geschrieben habe ich weiße ich auch nicht ohne Weiteres, was genau hier zu tun ist.
    Trotzdem vielen Dank für deine Hilfe!

  37. #37
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Das ist das alte Downloads Inhaltselement. Verwendest du das alte oder das neue?
    » sponsor me via GitHub or PayPal or Revolut

  38. #38
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    Ganz dumm gefragt, wo seh ich das?

    Ich denke mal das neue, weil Contao 5

  39. #39
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Zitat Zitat von feG3 Beitrag anzeigen
    Ganz dumm gefragt, wo seh ich das?

    Ich denke mal das neue, weil Contao 5
    Sofern du nicht auf die alten Inhaltselemente zurückgeschalten hast (https://github.com/contao/contao/blo...ntent-elements), dann hast du die neuen Inhaltselemente. Für das Downloads Inhaltselement wäre das also https://github.com/contao/contao/blo...Controller.php
    » sponsor me via GitHub or PayPal or Revolut

  40. #40
    Contao-Nutzer
    Registriert seit
    24.11.2023.
    Beiträge
    41

    Standard

    So, falls es sonst noch jemand braucht, hab's jetzt endlich hinbekommen (oder hingepfuscht, Auslegungssache ).

    Benutze jetzt das alte ce_downloads.html5 Template statt dem neuen Twig, weil ich damit nicht zurecht komme.

    config.php
    PHP-Code:
    $GLOBALS['TL_CTE']['files']['downloads'] = \Contao\ContentDownloads::class; 
    src/EventListener/ParseTemplateListener.php
    PHP-Code:
    <?php

    namespace App\EventListener;

    use 
    Contao\CoreBundle\DependencyInjection\Attribute\AsHook;
    use 
    Contao\CoreBundle\Routing\ScopeMatcher;
    use 
    Contao\FilesModel;
    use 
    Contao\Template;
    use 
    Symfony\Component\HttpFoundation\Request;
    use 
    Symfony\Component\HttpFoundation\RequestStack;

    #[AsHook('parseTemplate')]
    class ParseTemplateListener
    {
        private 
    ScopeMatcher $scopeMatcher;
        private ?
    Request $request;

        public function 
    __construct(ScopeMatcher $scopeMatcherRequestStack $requestStack)
        {
            
    $this->scopeMatcher $scopeMatcher;
            
    $this->request $requestStack->getCurrentRequest();
        }

        
    /**
         * Add the copyright fields to the image template
         *
         * @param Template $template
         *
         * @return void
         */
        
    public function onParseTemplate(Template $template): void
        
    {
            if (
    null === $this->request) {
                return;
            }

            if (
    false === $this->scopeMatcher->isFrontendRequest($this->request)) {
                return;
            }

            
    // Only the downloads template should be used
            
    if (false === str_starts_with($template->getName(), 'ce_downloads')) {
                return;
            }

            
    $files $template->__get('files');

            if(
    null === $files){
                return;
            }

            foreach(
    $files as $key=>$file) {
                
    $uuid $file['uuid'];
                
    $fullFile FilesModel::findByUuid($uuid);
                if(
    null === $fullFile){
                    return;
                }
                
    $categories $fullFile->filterCategories;
                
    $file['categories'] = $categories;

                
    $files[$key] = $file;
            }

            
    $template->__set('files'$files);
        }
    }

    tl_files.php
    PHP-Code:
    <?php
    use Contao\CoreBundle\DataContainer\PaletteManipulator;

    $GLOBALS['TL_DCA']['tl_files']['fields']['filterCategories'] = [
        
    'label' => &$GLOBALS['TL_LANG']['tl_files']['filterCategories'],
        
    'inputType' => 'text',
        
    'sql' => ['type' => 'string''default' => ''],
    ];

    PaletteManipulator::create()
        ->
    addField('filterCategories''meta'PaletteManipulator::POSITION_APPEND)
        ->
    applyToPalette('default''tl_files');

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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