Basiert auf dem TYPOlight Originaltemplate ce_downloads.tpl der TYPOlight Version 2.8.3:
Beschreibung: Die Modifizierung bewirkt (mit Hilfe der TYPOlight/Contao-Core-Funktion getImage()) bei Bildformat-Downloads eine Darstellung eines entsprechenden Thumbnails anstelle des Dateityp-Icons (links neben dem Download-Link). Zusätzlich sind die Thumbnails genauso verlinkt (spricht mit demselben <a>-Tag inklusive title-Attribut gewrapped) wie die verlinkte Bezeichnung des Downloads rechts daneben.
Anwendungsbeispiel: Man möchte "anderen" eine Fotostrecke als Download-Liste zur Verfügung stellen, z.B. als Alternative zum Versenden der Bilder in einer (zu?) "großen" Mail. Ohne Thumbnails kann das für den (potenziellen) Foto-Interessenten eine üble Sucherei werden: Jedes Bild müsste erst einmal geöffnet werden, um festzustellen, ob einen das Foto interessiert...
Bemerkungen:
(1) Man beachte, dass die Modifizierungen (in meiner Implementierung) nur dann zum Tragen kommen, wenn man dem Downloads-Inhaltelement eine bestimmte Klasse (siehe Template-Code unten) mitgibt.
(2) Man berücksichtige weiterhin, dass getImage() Einschränkungen (u.a.) bzgl. der Wahl der maximalen Bildformat-Dimensionen macht, was sich in einer NICHT-Verkleinerung des Originalbildes darstellt (siehe z.B. Contao-Core-Quellcode dieser Funktion).
(3) Es sollten nur Downloads mit Bildformat-Dateien in der Liste sein. Was sonst passiert, habe ich nicht getestet!
Template-Datei ce_downloads.tpl :
PHP-Code:
<?php require_once("nabu.php"); ?>
<!-- indexer::stop -->
<div class="<?php echo $this->class; ?> block"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
<?php if ($this->headline): ?>
<<?php echo $this->hl; ?>><?php echo $this->headline; ?></<?php echo $this->hl; ?>>
<?php endif; ?>
<?php foreach ($this->files as $file): ?>
<p style="clear:both;">
<div style="float:left;margin-right:10px;" class="nabu-download-img-left">
<a href="<?php echo $file['href']; ?>" title="<?php echo $file['title']; ?>">
<img src="<?php echo Nabu::hasClass($this,'nabu-download-img') ? $this->getImage(Nabu::getUrlParameter($file['href'],'file'),100,100,'box') : $file['icon']; ?>" alt="" class="mime_icon"
<?php echo Nabu::hasClass($this,'nabu-download-img') ? '' : 'width="18"' ?>
<?php echo Nabu::hasClass($this,'nabu-download-img') ? '' : 'height="18"' ?>
/>
</a>
</div>
<div style="float:left;">
<a href="<?php echo $file['href']; ?>" title="<?php echo $file['title']; ?>">
<?php echo $file['link']; ?> <span class="size">(<?php echo $file['filesize']; ?>)</span>
</a>
</div>
</p>
<?php endforeach; ?>
</div>
<!-- indexer::continue -->
PHP-Include-Datei nabu.php :
PHP-Code:
class Nabu{
static public function hasClass($item,$key) { return self::isInArray(explode(' ',trim($item->class)),$key); }
static public function isInArray(array $array,$elem) { $result = self::getArrayElement($array,$elem); return !empty($result); }
static public function getArrayElement(array $array,$elem) { return array_intersect($array,array($elem)); }
static public function getUrlParameter($url,$key){
$parts = parse_url($url);
$parametersString = $parts['query'];
$parameters = array();
parse_str($parametersString,$parameters);
return $parameters[$key];
}//getUrlParameter
}//class Nabu
Hier noch ein paar fehlende CSS-Definitionen:
Code:
.nabu-download-img div { margin-top:15px; }
.nabu-download-img .nabu-download-img-left { margin-right:10px;text-align:right;width:100px; }
Viele Grüße refalo.