Dies ist ein Gastbeitrag von Hendrik Reimes. Auch hier gilt wieder Tutorial != Beispiel. Das Beispiel zeigt, wie mit einer User Funktion und ein wenig TypoScript externe Bilder für eine gewisse Zeit gecacht werden können. Die UserFunction kümmert sich um das Caching selbst und das TypoScript gibt das eigentliche Bild aus. Für das Beispiel wird zudem die ts_select-Extension benötigt. Fragen könnt ihr wie immer in den Kommentaren stellen.
UserFunction:
<?php class user_getextimage { function main($content,$conf) { $url = $conf['url']; if ( empty($conf['filename']) ) { $targetFile = $conf['targetPath'].hash('adler32',$url).".".$conf['fileExt']; } else $targetFile = $conf['targetPath'].$conf['filename'].".".$conf['fileExt']; # Wenn Datei noch nicht zu alt ist gleich zurückliefern anstatt neu laden if ( file_exists($targetFile) ) { $lastModified = filemtime($targetFile); $currentTime = time(); if ( ($lastModified + $conf['cacheTimeout']) > $currentTime ) return $targetFile; } // Anfrage ausfuehren und ausgeben file_put_contents($targetFile,t3lib_div::getUrl($url)); // PFad liefern return $targetFile; } } ?> |
Setup:
plugin.tx_tsselect_pi1.objList.imageTest.title = Image Test plugin.tx_tsselect_pi1.objList.imageTest.cObject = IMAGE plugin.tx_tsselect_pi1.objList.imageTest.cObject { file.import.stdWrap.cObject = USER file.import.stdWrap.cObject { includeLibs = fileadmin/user_getextimage/user_getextimage.class.php userFunc = user_getExtImage->main url = http://lorempixel.com/450/350/ targetPath = fileadmin/user_getextimage/ fileExt = jpg filename = extImage cacheTimeout = 300 } file.maxW = 150 file.maxH = 150 imageLinkWrap = 1 imageLinkWrap.enable = 1 imageLinkWrap.typolink { parameter.cObject < plugin.tx_tsselect_pi1.objList.imageTest.cObject.file.import.stdWrap.cObject ATagParams = class="lightbox" rel="lightbox[galerie]" } wrap = |<br />Source from: http://lorempixel.com/ } |