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! :D ).
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>';

Kommentar abgeben


Suchmaschinenoptimierung mit Ranking-Hits