Archive für das ‘Tips’ Tag
Weiterleitung von ohne www. auf mit www. – Die PHP-Lösung
Es gibt bereits viele Möglichkeiten im Web um Duplicate Entry durch das weglassen von www. zu vermeiden. Häufig sind Seiten sowohl mit als auch ohne das www vor der URL zu erreichen, die weiteren Verlinkungen gehen dann zwar meist einheitlich auf eine Methode über, aber trotzdem ist es eine unschöne und Suchmachinen-technisch unsaubere Lösung beides zuzulassen. Auch für Typo3 gibt es Lösungen für das Problem. Man kann zum Beispiel ein Domain Eintrag auf der obersten Seite der Homepage erstellen und dem Sagen, dass er auf die Domain mit www.-Weiterleiten soll. Soviel zur Theorie, bei mir hat die Lösung nicht gut geklappt und es kam häufig zu redirect loops. Falls man jedoch doch diese Methode wählen sollte, sollte man aufjedenfall dieses Plugin benutzen, da ein 301 redirect für Suchmachinen in diesem Fall optimal ist.
Nochmal zur Erinnerung, 301 redirects sagen Google und Co, dass sie die weitergeleitete Seite in Zukunft immer auf der neuen Adresse suchen sollen. Dadurch wird der Page Rank auf die neue Seite vererbt und die Suchmachinen denken nicht, dass zwei mal die selbe Seite mit selben Inhalt existiert, also Duplicate Entry.
Nun also zu meiner Lösung. Wie bereits in meinem letzten Beitrag benutze ich die Möglichkeit im Typoscript eine PHP-Datei auszuführen. Um von Seiten ohne www auf Seiten mit zu verlinken, überprüfe ich ob die aktuell aufgerufene URL das www am Anfang enthält. Ist dieses nicht vorhanden, mache ich einen 301 redirect auf die selbe Seite, füge jedoch am Anfang das www mit an. Eine wie ich finde absolut einfache Lösung, ohne die htaccess Datei zu bearbeiten oder Extensions installieren zu müssen. Im folgenden der PHP-Quelltext der ausgeführt werden muss um dies zu tun.
if (strpos($_SERVER['SCRIPT_URI'],’www.’) === FALSE) {
header(‘HTTP/1.1 301 Moved Permanently’);
header(‘Location: http://’.$this->correctDomain.$_SERVER['SCRIPT_URL']); //$this->correctDomain -> z.B. www.typo3-problem.com
header(‘Connection: close’);
exit();
}
Die Lösung mit den Sprachen – Typo3 und Mehrsprachigkeit

Neuen Datensatz anlegen
Man könnte denken, dass mehrere Sprachen in Typo3 einfach zu verwenden sind. Es ist ja schon vorgesorgt wurden und prinzipiell auch alles vorhanden um Sprechen in Typo3 zu verwenden. Aber es bedarf noch einiger Anpassungen, bevor alle Verlinkungen richtig gesetzt sind und die Seiten richtig angezeigt werden. Hier mal ein kleines Tutorial zu all den Sachen die man beachten muss, wenn man Typo3 auf Mehrsprachigkeit trimmen will!
Zunächst sollte man auf der ROOT-Seite eine neue Sprache im Listen-Modul anlegen. Das sollte alles sehr einfach funktionieren und erklärt sich auch fast von selbst. Wenn der Schritt getan ist, folgt die ganze Konfiguration. Die in Typo3 natürlich über Typoscript geregelt wird. Im Template arbeitet man hier für am besten mit einer Weiche und ein paar temporären Variablen. Man erstellt also eine temporäre Variable und weißt dieser einen Standartwert für die Default-Sprache zu. In der Weiche, die nur bei einer bestimmten Sprache aufgerufen wird, ersetzt man dann die Werte in der temporären Variablen. Somit ist sichergestellt, das in der Variable auch nur das drinsteht, was für die Sprache relevant ist. Diese Variable wird dann im weiteren Typoscript der eigentlichen Variable übergeben. Hier ein Beispiel:
#temporäre Variablen
temp.langParam = TEXT
temp.langName = TEXT#Hauptsprache
config {
sys_language_uid = 0
language = en
locale_all = en_US
}
temp.langParam.value = &L=0
temp.langName.value = englisch#2. Sprache
#Die “1″ muss mit der ID der zusatz Sprache übereinstimmen
[globalVar = GP:L = 2]
config {
sys_language_uid = 2
language = de
locale_all = de_DE
}
temp.langParam.value = &L=2
temp.langName.value = deutsch
[GLOBAL]
Hier wird nun also in die temporären Variablen langParam und langName ein Sprachen abhängiger Wert übergeben den man später dann weiter verwenden kann. config.sys_language_uid ist im übrigen auch sehr wichtig, da dieser Wert den anderen Objekten von Typo3 (z.B. tt_content und page) mitteilt, welche Sprache sie laden müssen.
Um nun ein Menu zur Auswahl der Sprache zu erzeugen, muss man wieder eine temporäre Variable einfügen. Diese Variable legt man so an, dass sie gleich in das Template an einer Markerstelle eingefügt werden kann. Folgendes Typoscript benutze ich dafür.
temp.langlink = COA
temp.langlink {
10 = TEXT
10.value = <img src=”fileadmin/templates/kite/img/flag_de.png” alt=”deutsch” />
10.typolink.parameter.data = page:uid
10.typolink.additionalParams = &L=1
10.typolink.ATagParams = lang=de xml:lang=de20 = TEXT
20.value = <img src=”fileadmin/templates/kite/img/flag_eng.png” alt=”english” />
20.typolink.parameter.data = page:uid
20.typolink.additionalParams = &L=0
20.typolink.ATagParams = lang=en xml:lang=en
}
Durch das COA das für die Variable temp.langLink benutzt wird, können mehrere TEXT Objekte zugewiesen werden. Ich benutze in dem Fall Grafiken um auf die Sprachen zu verlinken. Diese Grafiken werden per .value an das TEXT Objekt übergebe, um den Link zu erzeugen, benutze ich die typolink Funktion. Als Parameter übergeb ich die UID der aufgerufenen Seite (page:uid) und als adiditionalParams sag ich durch &L=1 die Sprache in der die Seite angezeigt werden soll. Dabei muss die Zahl mit der UID der in Typo3 angelegten Sprache übereinstimmen. So ist sichergestellt, dass bei klick die selbe Seite aufgerufen wird, nur in der entsprechenden Sprache.
Weitere Tips mit der Typo3 Mehrsprachigkeit werde ich hier noch veröffentlich. Das reicht erstmal als Einleitung