Ergebnis 1 bis 13 von 13

Thema: PDF Downloads in Contao: Frage zur Funktionsweise

  1. #1
    Contao-Nutzer
    Registriert seit
    17.04.2012.
    Ort
    Deutschland / Bulgarien
    Beiträge
    131

    Standard PDF Downloads in Contao: Frage zur Funktionsweise

    Hallo!

    Ich habe zwei Fragen zur Funktionsweise der Downloads in Contao. Habe leider nicht viel zum Thema gefunden.

    1. Wie sieht es mit der Suchmaschinenfreundlichkeit aus? PDF-Dateien als Downloads werden nicht direkt verlinkt, sondern über ein Skript in der URL aufgerufen:
    http://www.domain.tld/seite.html?file=tl_files/downloads/datei.pdf


    2. Irgendwie wird dem Browser anscheinend mitgeteilt, dass er eine solche PDF Datei über "Speichern unter" abspeichern soll anstatt diese in einem Browserfenster direkt zu öffnen. Welcher Mechanismus sorgt dafür und kann dieser irgendwie (z.B. über .htaccess) geändert werden?

    Danke im Voraus.
    Anguel

  2. #2
    Contao-Fan Avatar von joe
    Registriert seit
    20.06.2009.
    Ort
    Lüneburg
    Beiträge
    687
    User beschenken
    Wunschliste

    Standard

    Hi,

    1. Ja pdf Dateien werden erfasst, gib bei google einfach mal
    Code:
    site:contao.org filetype:pdf
    ein, dann werden dir alle indexierten pdf Dateien von contao.org angezeigt.
    2. Dafür sorgt der Get Parameter file. Dieser sorgt dafür das die Datei direkt runtergeladen wird, auf die technischen details gehe ich an dieser stelle nicht tiefer ein. Wenn du das nicht möchtest kannst du z.B. einfach die entsprechenden Templates ändern.

    vg Joe
    Trainings und Coachings zur Fort und Weiterbildung sowie Beratung in den Bereichen Contao, JavaScript, jQuery, VueJS, React, PHP, NodeJS und vielen weiteren Themen.

    Mehr unter jgreg.dev

    Follow me on Twitter @JoeRayGregory

  3. #3
    Contao-Nutzer
    Registriert seit
    17.04.2012.
    Ort
    Deutschland / Bulgarien
    Beiträge
    131

    Standard

    Hey Joe, vielen Dank für die Infos!

  4. #4
    Contao-Nutzer
    Registriert seit
    27.04.2010.
    Ort
    Hannover
    Beiträge
    41

    Standard

    Zitat Zitat von joe Beitrag anzeigen
    2. Dafür sorgt der Get Parameter file. Dieser sorgt dafür das die Datei direkt runtergeladen wird, auf die technischen details gehe ich an dieser stelle nicht tiefer ein. Wenn du das nicht möchtest kannst du z.B. einfach die entsprechenden Templates ändern.
    Bin gerade auf der Suche - in welchem Template finde ich das? Im ce_downloads.xhtml scheint es nicht zu sein, oder?
    Ein einfaches
    HTML-Code:
    <a class="pdf" href="<?php echo $file['href']; ?>" title="<?php echo $file['title']; ?>"><?php echo $file['link']; ?></a>
    dort im Template sorgt immer noch dafür, dass die PDFs heruntergeladen werden anstatt sie im neuen Fenster zu öffnen (class="pdf" nutze ich für mein Design).
    Ein hinzugefügtes
    HTML-Code:
    onclick="return !window.open(this.href)"
    im Link öffnet dann zwar wie gewünscht das neue Fenster, die PDF dann aber immer noch zum Download.
    Geändert von cuco (30.05.2013 um 20:26 Uhr)

  5. #5
    Contao-Fan Avatar von joe
    Registriert seit
    20.06.2009.
    Ort
    Lüneburg
    Beiträge
    687
    User beschenken
    Wunschliste

    Standard

    Hallo cuco,

    Bei den Downloads hast wird der Link (im Template $file['href']) direkt von Contao vorgegeben und es gibt leider keine zusätzliche Übergabe des reiner Links ohne file get Parameter.

    D.h. dir bleiben nur 2 Möglichkeiten:

    1. Die entfernst den get Parameter nachträglich im Template. das könnte in deinem Fall so aussehen:

    PHP-Code:
    <a class="pdf" href="<?php echo str_replace('?file='''$file['href']); ?>" title="<?php echo $file['title']; ?>"><?php echo $file['link']; ?></a>
    2. Du erweiterst die Ausgabe mit einem eigenen Modul über z.b. den getContentElements Hook

    Generell wäre es schon schön wenn man von Haus aus in Contao eine zusätzliche Möglichkeit hätte nur den den Source ohne get Parameter auszugeben. Eventuell mal ein Ticket wert

    Viele grüße
    Joe
    Trainings und Coachings zur Fort und Weiterbildung sowie Beratung in den Bereichen Contao, JavaScript, jQuery, VueJS, React, PHP, NodeJS und vielen weiteren Themen.

    Mehr unter jgreg.dev

    Follow me on Twitter @JoeRayGregory

  6. #6
    Contao-Nutzer
    Registriert seit
    27.04.2010.
    Ort
    Hannover
    Beiträge
    41

    Standard

    Hi Joe
    Ah, das war der richtige Ansatz. Die Version von dir klappt zwar noch nicht, aber damit konnten wir eine funktionierende Version bauen.
    PHP-Code:
    <a class="pdf" href="<?php echo preg_replace("/.*file\=(.*)/""$1"$file['href']); ?>" title="<?php echo $file['title']; ?>" onclick="return !window.open(this.href)"><?php echo $file['link']; ?></a></li>
    Die Zeile macht das, was sie soll - einen Link anzeigen, den man anklicken kann - und wenn man ihn anklickt, öffnet sich die PDF in einem neuen Fenster und nicht als Download.

  7. #7
    Contao-Fan Avatar von joe
    Registriert seit
    20.06.2009.
    Ort
    Lüneburg
    Beiträge
    687
    User beschenken
    Wunschliste

    Standard

    Hi cuco,

    Bitte. Ja klar stimmt, mein Vorschlag war nur auf das Fragezeichen beschränkt. Wenn ein Parameter mit & (&file=) kommt dann greift meine Variante natürlich nicht. Da ist euer Ansatz natürlich sinnvoller
    Trainings und Coachings zur Fort und Weiterbildung sowie Beratung in den Bereichen Contao, JavaScript, jQuery, VueJS, React, PHP, NodeJS und vielen weiteren Themen.

    Mehr unter jgreg.dev

    Follow me on Twitter @JoeRayGregory

  8. #8
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Nur zum Verständnis: wenn Du einen direkten Link haben möchtest, warum nutzt Du dann das Modul Download oder Downloads?

    Nach meinem Verständnis dient das insbes. dazu, die PDF-Datei auch schützen zu können, also Zugriff auf das Verzeichnis per .htaccess gesperrt, so daß ein direkter Zugriff nicht mehr geht. Downloads liefert sie sie dann trotzdem aus, wenn die Bedingungen seiner Zugriffskonfiguration erfüllt sind (Mitglied in Gruppe ...).
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  9. #9
    Contao-Nutzer
    Registriert seit
    27.04.2010.
    Ort
    Hannover
    Beiträge
    41

    Standard

    Weil das Modul für denjenigen, der die Website am Ende nutzt im Backend so deutlich einfacher zu pflegen ist, da eben im Frontend Voraussetzung ist, dass die PDFs sich direkt im Browser öffnen und nicht erst heruntergeladen werden.

    Ich habe vorher auch eine andere Lösung benutzt, bei der ich mir meine PDF-Downloads per TinyMCE einbinde, also eine Liste der Link-Titel schreibe und dann einzeln jeden Eintrag der Liste mit der entsprechenden PDF verlinke, aber wegen der CSS-Formatierungen eine exakte Formatierung einhalten muss. Das ist ein "wildes Rumgeklicke" im TinyMCE inkl. manuellen Änderungen am generierten HTML-Code und wenn der Code nicht exakt passt, dann sieht das Ergebnis im Frontend nicht so aus, wie es aussehen soll. Da es eine nicht gerade kleine Anzahl an Unterseiten ist, die diese PDF-"Datenbanken" nutzen, war eine einfachere Lösung gefragt. Also wird jetzt das Downloads-Modul benutzt. Da muss man dann seine Dateien nur noch hochladen, auf der entsprechenden Unterseite mit den PDF-Downloads das Downloads-Modul bearbeiten und einen Haken machen bei der neu hinzugefügten PDFs. Keine Links mehr manuell setzen (hatte manchmal auch aus Versehen die falsche Datei verlinkt im TinyMCE, bei der großen Anzahl macht man schon mal Fehler) und man muss auch keine Formatierung mehr exakt einhalten, dafür sorgt dann ja schon das ce-downloads-Template im Hintergrund.
    Weiterhin sollten sich aber eben die PDFs direkt im Browser im neuen Fenster öffnen und nicht erst gedownloadet werden, so dass der Besucher erst in seinem lokalen Downloadverzeichnis nach den Ergebnissen wühlen muss.

    Klar kann man eben über das Downloads-Modul auf Dateien zugreifen, die in gesperrten Verzeichnissen liegen und dafür eine Nutzerverwaltung benutzen. Aber bei mir ist nichts gesperrt und soll auch nichts gesperrt werden, alles ist öffentlich und für jeden Besucher sichtbar. Da überwiegen also die Vorteile der Einfachheit, die Nachteile der nun nicht mehr nutzbaren Sicherheitsfeatures sind egal, da eh nicht benötigt.

  10. #10
    Contao-Fan Avatar von joe
    Registriert seit
    20.06.2009.
    Ort
    Lüneburg
    Beiträge
    687
    User beschenken
    Wunschliste

    Standard

    Ging mir schonmal ähnlich. Ich hatte mal vor jahren einen Kunden der das genauso wie von dir beschrieben wollte. Eine Änderung wie in diesem Thread beschrieben war dann der schnellste / kostengünstigste Weg und da es um eine kleine schnuggelige Seite ging, war dies ok.

    Natürlich gäbe es hier wesentlich elegantere Lösungen.
    Trainings und Coachings zur Fort und Weiterbildung sowie Beratung in den Bereichen Contao, JavaScript, jQuery, VueJS, React, PHP, NodeJS und vielen weiteren Themen.

    Mehr unter jgreg.dev

    Follow me on Twitter @JoeRayGregory

  11. #11
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    nur so als Idee: würde evtl. eine rewrtite rule in der .htaccess helfen? Ich meine, anstelle der Änderung des Links im Template.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  12. #12
    Contao-Nutzer
    Registriert seit
    27.04.2010.
    Ort
    Hannover
    Beiträge
    41

    Standard

    Zitat Zitat von joe Beitrag anzeigen
    Ging mir schonmal ähnlich. Ich hatte mal vor jahren einen Kunden der das genauso wie von dir beschrieben wollte. Eine Änderung wie in diesem Thread beschrieben war dann der schnellste / kostengünstigste Weg und da es um eine kleine schnuggelige Seite ging, war dies ok.

    Natürlich gäbe es hier wesentlich elegantere Lösungen.
    So ist es. Ginge auf jeden Fall eleganter, aber warum ein eigenes Modul schreiben, wenn es so auch schon geht? Wenn man das Downloads-Modul nur für diesen Fall braucht, ist es ja auch ok. Schwieriger wird es, wenn man das Downloads-Modul auf einer Seite sowohl mit "Schutz" braucht als auch so wie in diesem Fall. Dann kann man ja nicht mehr einfach das Template ändern, das gilt ja schließlich für alle downloads-Elemente.

    Zitat Zitat von fiedsch Beitrag anzeigen
    nur so als Idee: würde evtl. eine rewrtite rule in der .htaccess helfen? Ich meine, anstelle der Änderung des Links im Template.
    Könnte auch klappen. Müsste aber am Ende aufs gleiche rauskommen, oder nicht? Wobei: Vielleicht kann man dann sogar noch etwas differenzierter arbeiten und diesen "Hack" nur auf den Unterseiten anwenden, auf denen er auch benötigt wird. Und nicht auf allen, wie es jetzt durch die Templateänderung der Fall ist.

  13. #13
    Contao-Nutzer Avatar von darth_saschi
    Registriert seit
    05.11.2009.
    Beiträge
    220

    Standard

    Zitat Zitat von cuco Beitrag anzeigen
    Hi Joe
    Ah, das war der richtige Ansatz. Die Version von dir klappt zwar noch nicht, aber damit konnten wir eine funktionierende Version bauen.
    PHP-Code:
    <a class="pdf" href="<?php echo preg_replace("/.*file\=(.*)/""$1"$file['href']); ?>" title="<?php echo $file['title']; ?>" onclick="return !window.open(this.href)"><?php echo $file['link']; ?></a></li>
    Die Zeile macht das, was sie soll - einen Link anzeigen, den man anklicken kann - und wenn man ihn anklickt, öffnet sich die PDF in einem neuen Fenster und nicht als Download.
    YOOO, das habe ich gesucht!

    DANKE!

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
  •