Zum Inhalt springen

srlanguagemenu - Problem bei forceUseOfExternalUrl und default-Sprache

Erstellt am 6. Juli 2009 · 2 Antworten · letzte Antwort am 19. September 2011

Tags: RealURL, Frage

Unbekannter Benutzer ·

Hallo zusammen,

leider habe ich bisher noch keine Lösung zu diesem Problem gefunden:
Ich verwende realURL und srlanguagemenu in einer Typo3-Installation und möchte gerne das Sprachenmenü so nutzen, dass immer auf die jeweilge Domain, passend zu der Sprache, gesprungen wird. Demnach habe ich vier Domains im Stile www.test.de, www.test.es, www.test.co.uk, www.test.fr.
Deutsch ist die Standard-Sprache mit der languageID 0. Es folgen:

  • es = 1

  • en = 2

  • fr = 3

Mein Problem ist nun, dass nur die Default-Sprache im Menü keine externalURL enthält. Bin ich also im deutschen Bereich auf test.de, kann ich in alle Sprachen und die jeweiligen Domains springen. Auch zwischen den Sprachen funktioniert der wechsel wunderbar, aber auf die Default-Sprache komme ich nicht mehr zurück, da hier als link nur start.html eingesetzt ist und die Domain fehlt.
Da ich nun in der realURL-Konfiguration die baseURL der Sprache anpasse, ist der Link in die deutsche Sprache immer defekt. Aus dem spanischen Bereich ist der Link dann www.test.es/start.html, was nicht funktionieren kann.

srlanguagemenu-TS:

plugin.tx_srlanguagemenu_pi1 {
	flag.CUR.stdWrap.wrap = <div class="CUR"> | </div>
	englishFlagFile = fileadmin/styles/mga/images/flags/en.gif

	defaultCountryISOCode = 
	defaultLanguageISOCode = de
	doNotLinkCurrent = 1
	useSysLanguageTitle = 1

	forceUseOfExternalUrl = 1

	useExternalUrl.de = http://{$URL.de}
	useExternalUrl.es = http://{$URL.es}
	useExternalUrl.en = http://{$URL.en}
	useExternalUrl.fr = http://{$URL.fr}
}
lib.language < plugin.tx_srlanguagemenu_pi1

realURL-TS
$baseURL_const enthält die URL der jeweiligen Sprache. Im deutschen Bereich also www.test.de

#### Aktivierung RealURL ####
config {
  baseURL = 1
  baseURL = http://{$baseURL_const}/
  tx_realurl_enable = 1
  prefixLocalAnchors = all
  notification_email_urlmode = all
}
#### Aktivierung RealURL ####

#Base-URL-Fix für IE6 Fehler "Vorgang abgebrochen"
[browser = msie] && [version= <7]
	config{ 
		baseURL >
		headerComment = -->  <base href="http://{$baseURL_const}/"></base> <!--
		xhtml_cleaning = 0
	}
[global]

Da ich das genau auf diese Weise schon auf anderen Seiten zum Laufen bekommen habe und nun schon drei Tage nach dem Fehler suche, wäre ich euch wirklich sehr dankbar. Die Seite liegt in einem neuen TYPO3 4.2.6 bei Mittwald.

Vielen Dank im Voraus
Michael

avonis ·

Das ist ein Bug in der Extension. Die Standard-Sprache hat intern offenbar keine ID-Kennung. sr_languagemenu schmeisst die Standard-Sprache an der auskommentierten Stelle raus:

if (is_array($this->conf['useExternalUrl.'])) {
  foreach ($languages as $key => $val) {
//  if ($this->languagesUids[$key]) {
      if (!$langArr[$this->languagesUids[$key]]) {
        if ($this->conf['useExternalUrl.'][$val]) {
          $this->languagesExternalUrls[$key] = $this->conf['useExternalUrl.'][$val];
          $langArr[$this->languagesUids[$key]] = $this->languagesUids[$key];
        }
      } else {
        if ($this->conf['useExternalUrl.'][$val] && ($this->conf['useExternalUrl.'][$val. '.']['force'] || $this->conf['forceUseOfExternalUrl'])) {
          $this->languagesExternalUrls[$key] = $this->conf['useExternalUrl.'][$val];
        }
      }
//  }
  }
}

Wenn ihr die if-Klausel wie oben auskommentiert, liefert das Menü auch bei der Originalsprache die passende URL aus.

Achtung! Auch hässlich sind teilweise die Sprach-Ids im Template-Setup. Für die deutsche Sprache musste folgende Konfiguration verwendet werden. Key für deutsch ist "de_DE".

lib.language_menu {

        [...bla...]

	forceUseOfExternalUrl = 1 
	useExternalUrl.de_DE = http://www.as-vertriebsservice.de
	useExternalUrl.en = http://www.as-vertriebsservice.com
}

---
Wir lieben TYPO3: Avonis - New Media
http://www.avonis.com