Hallo zusammen,
ich schildere mal das Problem:
Eine zweisprachige Webseite (deutsch + englisch). Zwei Domains (www.webseite.de + www.webseite.com). Rufe ich die .de-Domain auf erscheinen die deutschen Inhalte und man bleibt auch auf der .de-Domain wenn man in der Seite navigiert. Mit der englischen verhält es sich genauso. Das erreiche ich über folgendes TS:
page.config {
simulateStaticDocuments = 0
tx_realurl_enable = 1
prefixLocalAnchors = all
linkVars = L
#sys_language_mode = content_fallback
# deutsch:
baseURL = http://www.webseite.de/
sys_language_uid = 0
htmlTag_langKey = de-DE
language = de
locale_all = de_DE
}
# englisch:
[globalString = ENV:HTTP_HOST=www.webseite.com]
page.config{
baseURL = http://www.webseite.com/
sys_language_uid = 1
language = en
locale_all = en_EN
htmlTag_langKey = en
}
[global]
Das hat mit der alten Sprachumschalterdatei "example_languageMenu.php" auch wunderbar funktioniert, da ich da einfach die Domains mit reinschreiben konnte:
$query = "SELECT * FROM pages_language_overlay WHERE pid=".$GLOBALS["TSFE"]->id.$GLOBALS["TSFE"]->sys_page->enableFields("pages_language_overlay")." GROUP BY sys_language_uid";
$res = mysql(TYPO3_db,$query);
$langArr=array();
while($row=mysql_fetch_assoc($res)) {
$langArr[$row["sys_language_uid"]]=$row["title"];
}
$pointer = '<img src="fileadmin/templates/blitzstrom/pics_solar/flags/content_client.gif" width="7" height="10" align="top" alt="" />';
$flags = array();
$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==0?$pointer:"").'<a href="http://www.webseite.de/index.php?id='.$GLOBALS[" tsfe-="">id.'&L=0" target=_top><img src="fileadmin/templates/pics/flags/flag_de.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';
$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==1?$pointer:"").'<a href="http://www.webseite.com/index.php?id='.$GLOBALS[" tsfe-="">id.'&L=1" target=_top><img src="fileadmin/templates/pics/flags/flag_uk'.($langArr[1]?" :="" _dgif="" width="21" height="13" hspace="5" border="0" alt="" /></a>';
$content = '<div class="sprachauswahl_box">'.implode(" ",$flags).'</div>';
Leider werden bei dieser Version die Parameter von tt_news nicht mit übergeben. Deshalb hab ich mir die neue Version dieser Sprachumschalterdatei (tt_news_languageMenu.php) die bei tt_news dabei ist geschnappt und eingebaut:
function user_languageMenu($content) {
// image files for deafultlanguage
$defaultflag = array(
'on' => '<img src="fileadmin/templates/blitzstrom/pics_solar/flags/flag_de.gif" width="21" height="13" hspace="5" border="0" alt="" />',
'off' => '<img src="fileadmin/templates/blitzstrom/pics_solar/flags/flag_de_d.gif" width="21" height="13" hspace="5" border="0" alt="" />',
) ;
// image files for additional languages. the numbers are the uids of the system languages
$flagimages = array(
'1' => array(
'on' => '<img src="fileadmin/templates/blitzstrom/pics_solar/flags/flag_uk.gif" width="21" height="13" hspace="5" border="0" alt="" />',
'off' => '<img src="fileadmin/templates/blitzstrom/pics_solar/flags/flag_uk_d.gif" width="21" height="13" hspace="5" border="0" alt="" />'
)
);
// Pointer for the active language
$pointer = '<img src="fileadmin/templates/blitzstrom/pics_solar/flags/content_client.gif" width="7" height="10" alt="" />';
// First, select all pages_language_overlay records on the current page. Each represents a possibility for a language.
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'pages_language_overlay', 'pid=' . intval($GLOBALS['TSFE']->id) . $GLOBALS['TSFE']->sys_page->enableFields('pages_language_overlay'), 'sys_language_uid');
$langArr = array();
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
$langArr[$row['sys_language_uid']] = $row['title'];
}
$queryString = explode('&', t3lib_div::implodeArrayForUrl('', $GLOBALS['_GET'])) ;
if ($queryString) {
while (list(, $val) = each($queryString)) {
$tmp = explode('=', $val);
$paramArray[$tmp[0]] = $val;
}
$excludeList = 'id,L,tx_ttnews[pointer]';
while (list($key, $val) = each($paramArray)) {
if (!$val || ($excludeList && t3lib_div::inList($excludeList, $key))) {
unset($paramArray[$key]);
}
}
$tmpParams = implode($paramArray, '&');
$newsAddParams = $tmpParams?'&' . $tmpParams:'';
}
// unset the global linkVar "L" for the language menu because it's build new in this script
$linkVarsBak = $GLOBALS['TSFE']->linkVars;
$tmplinkVars = t3lib_div::trimExplode('&', $GLOBALS['TSFE']->linkVars) ;
if ($tmplinkVars) {
while (list($kl, $vl) = each($tmplinkVars)) {
if (!$vl || preg_match('/L=[0-9]/', $vl)) {
unset($tmplinkVars[$kl]);
}
}
$GLOBALS['TSFE']->linkVars = implode('&', $tmplinkVars) ;
}
$tmpLang = $GLOBALS['TSFE']->sys_language_uid;
$flags = array();
// flag for the default language
if ($GLOBALS['TSFE']->page['l18n_cfg']==1){ // = "Hide default Translation" is activated
$flags[0] = $defaultflag['off'];
} else {
$flags[0] = ($tmpLang == 0?$pointer:'') . $GLOBALS['TSFE']->cObj->typolink($defaultflag['on'], array('parameter' => $GLOBALS['TSFE']->id . ' _top', 'additionalParams' => (!preg_match('/&L=[0-9]/', $newsAddParams)?$newsAddParams . '&L=0':$newsAddParams)));
}
// flags for the additional language
if (is_array($flagimages)) {
foreach ($flagimages as $fk => $fv) {
if ($langArr[$fk]) {
$flags[$fk] = ($tmpLang == $fk?$pointer:'') . $GLOBALS['TSFE']->cObj->typolink($fv['on'], array('parameter' => $GLOBALS['TSFE']->id . ' _top', 'additionalParams' => (!preg_match('/&L=[0-9]/', $newsAddParams)?$newsAddParams . '&L=' . $fk:$newsAddParams)));
} else {
$flags[$fk] = $fv['off'];
}
}
}
$content = '<div class="sprachauswahl_box">'
. implode(" ",$flags) . '</div>';
// restore link vars
$GLOBALS['TSFE']->linkVars = $linkVarsBak;
return $content;
}
Die funktioniert auch. Sogar bei den News kann jetzt korrekt von einer Sprache zur anderen gewechselt werden. Leider wechselt es nicht zwischen den Domains. Also ich bin quasi auf der www.webseite.de, klicke auf die englische Flagge. Jetzt wird zwar der englische Inhalt angezeigt, aber eben auf der .de-Domain. Er soll aber auf die www.webseite.com wechseln, sobald man auf die englische Flagge geklickt hat.
Steh vieleicht auch grad bissel auf dem Schlauch. Wo muss ich das einstellen?
Vielen Dank schon mal :-)