Ich habe ein aktuelles Projekt, bei dem Überschriften mit dem Gifbuilder erzeugt werden. Und die Umlaute funktionierten einfach nicht, obwohl die Schriftart die Umlaute definitiv kann. Meine Recherche ergab, dass die meisten mit so einem Problem es in PHP5 und einem Typo3 Bug sehen. Der „hilfreiche“ Hinweis zur Lösung dieses Problems sah so aus, eine postUserFunc zu nutzen, um die Umlaute in ihre ASCII Form umzuwandeln. Leider erklärt einem keiner, wie genau man das macht.
Jetzt mal ganz ehrlich. Die Typo3 Hilfe / Doku beschreibt postUserFunc so. Ich bin ein Typo3 Noob. Mir stellen sich beim Durchlesen dieser „Hilfe“ direkt ein paar Fragen. Was genau ist „irgendwas“? Kann man das durch einen beliebigen String ersetzen? Wie muss die PHP Datei aussehen, wie greift die Funktion dann auf den Textwert zu? Offenbar soll man sich diese Infos aus der Nase ziehen.
Deswegen hier mal eine detaillierte Anleitung, wie man postUserFunc nutzt, um die Umlaute umzuwandeln.
1. die PHP Datei erstellen. Meine heißt umlautfunction.php und sieht so aus:
class user_umlautfunction {
var $cObj;// The backReference to the mother cObj object set at call time
function main($content,$conf){
$content.='bbbb';
return $content;
}
function encode($content,$conf) {
$array['search'] =array('Ä','ä','Ö','ö','Ü','ü');
$array['replace']=array('Ä','ä','Ö','ö','Ü','ü');
return str_replace($array['search'],$array['replace'],$content);
}
}
Die main Funktion braucht man wohl nicht, aber ich war mir nicht sicher, ob man die komplett rauslassen kann, also ließ ich sie mal drin.
2. die Datei im Typoscript einbinden
includeLibs.umlautfunction = fileadmin/templates/umlautfunction.php
3. die Funktion aufrufen
temp.header_grafik = COA
temp.header_grafik {
10 = IMG_RESOURCE
10.file = GIFBUILDER
10.file {
XY = [10.w]+23,[10.h]+15
format = gif
backColor = #FFFFFF
transparentBackground = 1
transparentColor = #ffffff
10 = TEXT
10 {
text.postUserFunc = user_umlautfunction->encode
fontSize = 10
fontFile = fileadmin/fonts/FUTURAB.TTF
...
Noch ein Hinweis: offenbar ist es wichtig, dass die Klasse mit user_ beginnt, ich hatte keine Lust, auszuprobieren, ob es auch so gehn würde. Wie immer war ich bei typo3 einfach nur froh, dass ich das Script überhaupt zum Laufen gebracht habe.
Übrigens: mir hat dieses Script nicht beim Lösen meiner Probleme geholfen. Wer Testen will, ob es überhaupt funktioniert und das Umlautproblem vielleicht eine andere Ursache hat, der modifiziere das replace array, um zu sehen, ob überhaupt Werte ersetzt werden oder nicht. Einfaches Beispiel:
$array['search'] =array('a');
$array['replace']=array('xxx');
So sieht man recht schnell, ob die Funktion überhaupt tut, was sie soll. Wenn alle a durch xx ersetzt werden, haperts nicht an der Funktion sondern irgendwas anderes läuft schief.