SmoothGallery und Umlaute …
Da ich gerade an einer Typo3 Seite arbeite (nicht diese Seite hier
) und ich dazu eine Galerie benötige, habe ich einige Extensions durchprobiert. Meine Wahl ist schlussendlich auf die SmoothGallery gefallen, da sie folgendes bietet: Thumbnail-Erstellung, Slideshow-Funktion, Lightbox, …
Doch da die Dateinamen der Bilder Umlaute enthalten, tut sich der Apache-Server etwas schwer (böse Umlaute!
).
Um ihm auf die Sprünge zu helfen setzen wir im Ordner der Galerie, standardmäßig rgsmoothgallery im Unterordner pi1 in der Datei class.tx_rgsmoothgallery_pi1.php die folgende Funktion ein:
// Ergänzung: Umlaute! function umlaute($path) { $umlaute = array( "Ä" => "%c4", "ä" => "%e4", "Ö" => "%d6", "ö" => "%f6", "Ü" => "%dc", "ü" => "%fc", "ß" => "%df" ); foreach ($umlaute as $umlaut => $ok) { $path = str_replace($umlaut, $ok, $path); } return $path; }
Diese Funktion muss nun vier mal aufgerufen werden:
1. für die Lightbox: $lightbox = umlaute($lightbox);
$lightbox = ($lightbox=='#' || $lightbox=='' || $this->config['lightbox']!=1) ? 'javascript:void(0)' : $this->cObj->IMG_RESOURCE($imgTSConfigLightbox); $lightbox = str_replace(' ', '%20', $lightbox); // search for empty chars, thx maxhb $lightbox = umlaute($lightbox); $lightBoxImage='<a href="'.$lightbox.'" title="'.$this->pi_getLL('textOpenImage').'" class="open"></a>';
2. für die Thumbnails: $thumbImage = ‘<img src=”‘.umlaute($this-/>cObj->IMG_RESOURCE($imgTSConfigThumb)).’”
if ($thumb) { $imgTSConfigThumb = $this->conf['thumb.']; $imgTSConfigThumb['file'] = $path; $thumbImage = '<img src="'.umlaute($this-/>cObj->IMG_RESOURCE($imgTSConfigThumb)).'" class="thumbnail" />'; }
3. und 4. für das große Bild, einmal wenn’s nur ein einziges Bild gibt und ein zweites Mal falls es doch mehr Bilder gibt
: $bigImage = umlaute($bigImage);
// if just 1 image should be returned if ($limitImages==1) { $bigImage = umlaute($bigImage); return '<img src="'.$bigImage.'" class="full" />'; } $bigImage = umlaute($bigImage); // build the image element $singleImage .= ' <div class="imageElement">'.$text. $lightBoxImage.' <img src="'.$bigImage.'" class="full" /> '.$thumbImage.' </div>';