16.1.07

Individuelle Character Sets im Backend

So, nachdem ich gut fünf Stunden damit verbracht habe herauszufinden warum die Website eines Kunden so dermaßen zerschossen dargestellt wurde (nur in der japanischen Sprachvariante), bekommt Ihr die Lösung quasi auf dem Silbertablett serviert.
Zunächst mal meine Problembeschreibung:
Unser Kunde lieferte japanische Texte (Website existierte bereits auf Deutsch [Standard], Englisch und Chinesisch [simplified]). Nach dem unser Praktikant einen Großteil der japanischen Texte eingepflegt hatte ist dann aufgefallen, dass bei einigen Zeichen der HTML Code zerstört wird.
Nach ewigem hin und her haben ich dann festgestellt, dass das japanische Character Set für das japanische Sprachpaket (csh_jp [ja, die Typo3 Version ist noch nicht 4.0]) mit shift_jis nicht mit den vom Kunden gelieferten Word Dokumenten kompatibel war (die waren im Character Set euc-jp codiert).
Jetzt könnte man natürlich argumentieren: "Warum hast du nicht forceCharset im Installtool auf UTF-8 gesetzt?? Dann wär das Problem nicht mehr vorhanden..."
Meine Antwort darauf: "Klar - vollkommen sinnige Antwort, allerdings war niemand so wirklich scharf darauf dem Kunden zu erklären warum seine deutschen Texte alle erneut eingepflegt werden müssen. Und... achja hatte ich ja erwähnt - da war ja auch noch eine chinesische Variante..."
Fazit: Wir müssen das BE irgendwie in euc-jp umstellen (das FE ist ja relativ simpel umzustellen).

Die schlechte Nachricht zuerst: Außer mit forceCharset lässt sich die Codierung im Backend nicht überschreiben.
Jetzt die Gute: Allzu schwer ist es trotzdem nicht - wenn man weiß wo man hin muss...

Lösung:

Man öffne die Datei typo3/t3lib/class.t3lib_cs.php.
Ungefähr in Zeile 356 steht folgender Code:
    var $lang_to_charset_unix=array(
'west_european' => 'iso-8859-1',
'estonian' => 'iso-8859-1',
[...]
'chinese' => 'gb2312', // = euc-cn
'japanese' => 'euc-jp',
'korean' => 'euc-kr',
[...]
);

Im nächsten Array steht das gleiche für Windows, bloß dass hier als Charset für Japanisch shift_jis steht. Dies muss durch euc-jp ersetzt werden. Als letztes muss im übernächsten Array ($charSetArray) unter dem Index jp ebenfalls euc-jp eingetragen werden.
Jetzt müsst Ihr die Datei nur noch hochladen und voilá - euer Backend erstrahlt in neuer Codierung.

Achja, für's Frontend müsst Ihr in eurem TypoScript Template folgende Zeile einfügen:
config.renderCharset = euc-jp

Ich hoffe das hat euch einiges an Zeit gespart.

15.1.07

Section Header einbauen

Wenn Ihr sog. Section Headers einbauen wollt, könnt Ihr dafür das folgende TypoScript verwenden:
temp.CurrentPage = HMENU
temp.CurrentPage {
special = rootline
special.range = 1|1
1 = TMENU
1.NO.doNotLinkIt = 1
1.NO.allWrap = <div class="current_page"> | </div>
}

Was sind Section Header?
Also, wir gehen davon aus, Ihr habt auf eurer Seite eine Navigation mit den Punkten
Über uns, Referenzen und Kundenbereich.
Klickt ein Besucher jetzt zum Beispiel auf Kundenbereich habt Ihr Links eine Navigation, die die Unterpunkte von Kundenbereich anzeigt. Gleichzeitig möchtet Ihr aber auch für alle Seiten unter Kundenbereich anzeigen, dass Sie sich unter der Sektion (Section) Kundenbereich befinden.
Klickt sich ein Besucher dann z.B. in den folgenden Pfad
Kundenbereich >> Geschützer Bereich >> Downloads
soll das Label für Section Header trotzdem Kundenbereich anzeigen.
So, ich hoffe das war einigermaßen verständlich ;-)