Download Infos Snippet

von Hannes am 28.10.2011 in My Modx mit 0 Kommentaren

Download Infos

Dateien zum Download werden für gewöhnlich per Link bereitgestellt. Damit sich aber der Besucher sicher sein kann, was er nun runterlädt, wie groß die Datei und wie aktuell sie ist bedarf es eines kleinen Snippets, das diese Informationen bereitstellt.

Der Lösungsansatz

Im Grunde erledigt ein Snippet die ganze Aufgabe. Wie werden dazu noch ein paar Platzhalter, sogenannte Placeholders, definieren und müssen auch eine Template Variable anlegen, die als Typ "Datei" ausgewiesen wird und den Pfad der Datei ausgibt. Aber zuerst soll das Snippet folgen, bevor der Template Chunk angelegt wird und wir mit dem eigentlichen Aufruf des Snippets alles finalisieren.

getFile Snippet

<?php

$datei = "$data";
$filesize = filesize("$datei");

   $byte = $filesize; 
   $kb = $filesize/1024;
   $kb = round($kb,2);
   $mb = $kb/1024;
   $mb = round($mb,2);

$filedate = filectime ("$datei");
$date = date("d.m.Y",$filedate);

// Auswertung 
if ($byte > 1024) {
$size = "$kb kb";
} else {
$size = "$byte bytes";}

if ($kb > 1024) {
$size = "$mb mb";
} else {
$size = "$kb kb";}
   
//Templating
$tpl = $modx->getOption('tpl',$scriptProperties,'getFileTpl');

// Aufstellung der "Placeholders"
$modx->setPlaceholder('bytes', $byte);		
$modx->setPlaceholder('kilobytes', $kb);
$modx->setPlaceholder('megabytes', $mb);
$modx->setPlaceholder('size', $size);
$modx->setPlaceholder('date', $date);

//Gib mir aus, was ich will.
$output = $modx->getChunk($tpl);
return $output;

Anlegen des Chunks und der Template Variable

Soweit im Snippet später die &tpl Variable nicht angefasst wird referenziert getFile auf einen Chunk namens "getFileTpl". Diesen legen wir auch an und können nun mit den Placeholder spielen:

hochgeladen am [[+date]] und [[+size]] groß

[[+size]] ist ein dynamischer Platzhalter. Wer dagegen jede Datei in Bytes, Kilobytes oder Megabytes ausgespuckt haben will kann folgende Placeholder benutzen: [[+bytes]], [[+kilobytes]] oder [[+megabytes]]. Zum Schluss legen wir noch eine Template Variable mit dem Titel "downloadFile" an und weisen sie, wie oben beschrieben, dem Typ "Datei" zu.

Aufruf des Snippets

Zu guter letzt der Knalleffekt: Wir rufen das Snippet an der gewünschten Stelle auf.

<a href="[[*downloadFile]]">Download</a>
<span>[[!getFile? &data=`[[*downloadFile]]` &tpl=`getFileTpl`]]</span>

It's me!

Hannes

Mein Name ist Hannes, in Deutschland lebend, und versuche mich des öfteren zur Zeit an Realisierungen von einfachen und komplexen Websiten mit Modx CMS Lösungen. Die hiesige Seite ist mein Spielplatz, auf der ich mich austobe.

0 Kommentare zu "Download Infos Snippet"

Hast du etwas zu sagen? Dann ab dafür!