Ergebnis 1 bis 23 von 23

Thema: Rocksolid Custom Elements: den Link zu Dateien zum Herunterladen richtig generieren

  1. #1
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    494

    Standard Rocksolid Custom Elements: den Link zu Dateien zum Herunterladen richtig generieren

    Ich habe einen eigenen Elementtyp mit Hilfe der Erweiterung Rocksolid Custom Elements erstellt. Da möchte ich ein Bild abfragen, darstellen und noch die dazu passende Datei unter dem Bild zum Herunterladen anbieten.

    Allerdings merkt Contao, dass es sich um kein echtes Inhaltselement ce_dowload handelt, deswegen wird der Link nicht als der zum Herunterladen erkannt und daher passiert nach dem Anklicken nichts.

    Meine Frage: in welchem Format muss dann die PHP-Ausgabe sein, damit ein richtiger Link generiert wird, mit dem man die Datei herunterladen kann?

    Eingabe
    PHP-Code:
    'document' => array(
                            
    'label' => array('Datei zum Herunterladen'''),
                            
    'inputType' => 'fileTree',
                            
    'eval' => array(
                            
    'fieldType' => 'radio',
                            
    'filesOnly' => true,
                            
    'extensions' => \Config::get('allowedDownload'),
                            
    'isDownloads'=> true,
                            
    'tl_class' => 'w50'),
                        ), 
    Ausgabe
    PHP-Code:
    <?php if ($box->document): ?>
                <div class="download-box-links">
    <a href="de/?file={{file::<?= $box->document ?>}}"><span class="fa fa-download"></span><span class="link-label"><?php echo $box->linkLabel ?></span></a>
                    </div>
                    <?php endif ?>

  2. #2
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Verlink doch einfach direkt auf die Datei, warum den Umweg über den get Parameter file= gehen? Dazu müsstest du die Methode einbinden, die dafür sorgt, dass der file Paramter entsprechend verarbeitet wird. Was hier nicht der Fall ist.
    Es sei denn du bindest auf der Seite einfach ein dummy ce_download Element ein, dann geht es auch....
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

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

    Standard

    Den Pfad zur Datei bekommst du mit
    PHP-Code:
    \FilesModel::findById$this->document )->path 
    (Kurzversion ohne null und file_exists check)

  4. #4
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Wo hast Du denn den Eintrag

    PHP-Code:
    isDownloads'=> true 
    her? Wozu ist der?

    Finde ich gar nicht hier: https://docs.contao.org/books/api/dca/reference.html

    Danke Frank
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  5. #5
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Der eval-Paramater 'isDownloads' ist meiner Meinung nach unnütz. Er wird zwar im tl_content mal angegeben, es gibt aber keine Stelle an der dieser Parameter weiterverarbeitet/geprüft wird (zumindest habe ich bei der Suche nach isDownloads nichts gefunden)
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  6. #6
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Zitat Zitat von the_scrat Beitrag anzeigen
    Der eval-Paramater 'isDownloads' ist meiner Meinung nach unnütz. Er wird zwar im tl_content mal angegeben, es gibt aber keine Stelle an der dieser Parameter weiterverarbeitet/geprüft wird (zumindest habe ich bei der Suche nach isDownloads nichts gefunden)
    Danke ...
    Frank
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  7. #7
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    494

    Standard Link aus dem Dateisystem für Bild oder Datei auslesen und ausgeben

    Ich möchte noch für alle Bilder, die man auswählt, auch die Links ausgeben, die als Metainformation im Dateisystem eingetragen sind. Mit welcher Anweisung kann ich es erreichen?

    Ich dachte somit:

    PHP-Code:
    <?php if ($image->href): ?>
    <a href="<?php echo $image['href'?>"
    <?php endif ?>
    Die ganze Schleife sieht momentan so aus

    PHP-Code:
    <?php foreach ($images as $uuid): ?>
    <?php 
    if ($this->href): ?>
    <a href="<?php echo $image['href'?>"
    <?php endif ?>

        <?php if ($image $this->getImageObject($uuid)): ?>
            <img src="<?php echo $image->src ?>"<?php echo $image->imgSize ?> alt="<?php echo $image->alt ?>">
        <?php endif ?>
        <?php if ($this->href): ?>
            </a>
            <?php endif ?>
    <?php 
    endforeach ?>
    Das funktioniert allerdings nicht.

  8. #8
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Franko Beitrag anzeigen

    her? Wozu ist der?
    @Franko
    Ich hab zufällig rausgefunden für was "isDownload" ist. Es gibt auch noch "isGallery".
    Bei "isDownloads" wird die Vorschau der Dateinamen untereinander dargestellt, bei "isGallery" werden die Vorschaubilder nebeneinander dargestellt.


    @jenda
    Schau einfach in die Methode getImageObject, die Metadaten sollten über $image->alt, $image->imageUrl und $image->caption zur Verfügung stehen, mehr wird laut dieser Methode nicht ans Template übergeben.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  9. #9
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    494

    Standard

    Danke.

    Ich habe so was probiert, allerdings erfolglos.

    PHP-Code:
    <?php
        $images 
    deserialize($this->imagePartner);
        
    $tmp deserialize($this->orderSRC);

        if (!empty(
    $tmp) && is_array($tmp)) {
            
    // Remove all values
            
    $order array_map(function(){}, array_flip($tmp));

            
    // Move the matching elements to their position in $order
            
    foreach ($images as $k => $v) {
                if (
    array_key_exists($v$order)) {
                    
    $order[$v] = $v;
                    unset(
    $images[$k]);
                }
            }

            
    // Append the left-over images at the end
            
    if (!empty($images)) {
                
    $order array_merge($orderarray_values($images));
            }

            
    // Remove empty (unreplaced) entries
            
    $images array_values(array_filter($order));
        }
    ?>

    <?php foreach ($images as $uuid): ?>
        <?php if ($image $this->getImageObject($uuid)): ?>
        <?php if ($image->imageUrl): ?>
    <a href="<?php echo $image->imageUrl ?>"
    <?php endif ?>
            <img src="<?php echo $image->src ?>"<?php echo $image->imgSize ?> alt="<?php echo $image->alt ?>">
           <?php if ($image->imageUrl): ?>
    <a href="<?php echo $image->imageUrl ?>"
    <?php endif ?>
        <?php endif ?>
    <?php 
    endforeach ?>
    Allgemeine Frage: Wo kann mir immer die Contao-Methoden anschauen?

  10. #10
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Wird dir denn überhaupt ein Wert ausgegeben? Gibt es denn die Methode getImageObject an dieser Stelle überhaupt und ist sie nutzbar? Denn die gibts ja nur für Rocksolid
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  11. #11
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    494

    Standard

    Ja, die Bilder werden mit Alt-Infos und Größeangaben etc. ausgegeben. Siehe www Bereich Partner

  12. #12
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Ok und welche Infos fehlen? Und diese Infos in den Metadaten hinterlegt?
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  13. #13
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    494

    Standard

    Ja, die Links kann ich nicht ausgeben, obwohl er z.B. bei dem Logo Erasmus Plus eingetragen ist.

  14. #14
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    schreib mal in die Schleife

    var_dump($image);die();
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  15. #15
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    494

    Standard

    Danke. Entschuldige, wohin genau in der Schleife?

  16. #16
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Na am besten an die Stelle wo es $image bereits gibt ;-)

    PHP-Code:
    <?php foreach ($images as $uuid): ?> 
        <?php if ($image $this->getImageObject($uuid)): ?> 
    <?php var_dump($image);die();?>
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  17. #17
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    494

    Standard

    Sorry, das verstehe ich nicht. Bitte ganz genau schreiben, wohin. Danke.

  18. #18
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    494

    Standard

    das zerschießt alles und gibt natürlich die möglichen Variabeln aus. Siehe http://www.eurosoc-digital.org/de/pr...in-europe.html

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

    Standard

    Laut deiner Debug Ausgabe ist unter
    PHP-Code:
    $image->href 
    dein Link zu finden. Dein Fehler war, dass du den Link vorhin mit
    PHP-Code:
    <a href="<?php echo $image['href'?>"
    ausgegeben hast, statt mit
    PHP-Code:
    <a href="<?= $image->href ?>">
    (einen HTML Fehler hattest du da auch drin)

  20. #20
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    494

    Standard

    Ja, genau. Vielen Dank.

    Hier ist die richtige Anweisung

    PHP-Code:
    <?php if ($image->href): ?>
    <a href="<?php echo $image->href ?>" target="_blank">
    <?php endif ?>

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

    Standard

    Vorsicht, du hast da immer noch ein ">" vergessen.

    // ok, jetzt passt es

  22. #22
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    ok, ich war wohl komplizierter unterwegs als gedacht
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  23. #23
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    494

    Standard

    schon oben korrigiert.

    Wie geschrieben, Link im Dateisystem, wo man auch andere Metadaten einträgt.
    Geändert von jenda (07.07.2016 um 15:16 Uhr)

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
  •