Zum Inhalt springen

Sprachumschaltung auf Startseite anpassen

Erstellt am 18. Juni 2008 · 10 Antworten · letzte Antwort am 26. Juni 2008

Tags: RealURL, Frage

Mopps ·

Hallo,

was haben wir:
- mehrsprachige Website (de, en, it) mit Typo3 4.2.1
- realurl und ein Sprachmenü

Die gesamte Sprachumschalterei funktioniert wunderbar.
- nach Muster: www.domain.com/deu/ oder www.domain.com/eng/
- ruft man www.domain.com auf, dann leitet rlmp_language_detection auf den korrekten Ordner weiter (Browser deutsch -> www.domain.com/deu/)

Eine "Kleinigkeit" stört mich:
- die Version www.domain.com/deu.html, www.domain.com/ita.html etc. funktionieren auch. (Links dahin enstehen bei der Sprachumschaltung auf der Startseite).
Momentan habe ich per .htaccess eine 301 Weiterleitung auf das entsprechende Verzeichnis.

Aber ich würde gerne die realurl-Links auf der Startseite nicht nach "deu.html" sondern gleich nach "/deu/" zeigen lassen.

Geht das

aimcom ·

Ich habe das ganze ohne rlmp_language_detection gelöst, und zwar, indem ich in der Konfiguration folgendes angegeben habe (der Übersicht halber gekürzt):

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT'] = array(
  'pagePath' => array(
    'rootpage_id' => 1,
  ),

  'preVars' => array(
    'valueDefault' => 'deutsch',
  )
);

Vielleicht hilft es dir weiter, wenn du diese beiden Einträge setzst. Durch die Angabe von "valueDefault" werden bei mir alle Links von meiner Root-Seite (standardmäßig mit Default-Sprache ohne Parameter ?L=xxx) automatisch auf die deutsche Sprachversion gemappt.

Mopps ·

Danke aimcom,

Ich habe das ganze ohne rlmp_language_detection gelöst, und zwar, indem ich in der Konfiguration folgendes angegeben habe

Für mich sind das zwei verschiedene Dinge. Die genannten Einstellungen von dir verwende ich auch, aber sie bewirken ja nur, dass die "?L=x"-Parameter bei der Verwendung mit realurl in der URL mit verpackt werden, also aus
http://www.domain.net/index.php?id=13&L=1
wird dann eben z.B.
http://www.domain.net/deu/seite.html

rlmp_language_detection macht etwas anderes: es erkennt die Spracheinstellungen im Browser des Users und leitet auf die richtige Sprache weiter.

...alle Links von meiner Root-Seite (standardmäßig mit Default-Sprache ohne Parameter ?L=xxx) automatisch auf die deutsche Sprachversion gemappt.

Das werden sie bei mir auch. Aber: wie sehen Links auf deine Startseite (Rootseite) aus? Da steht bei mir dann z.B.:
http://www.domain.net/deu.html
und das soll so nicht sein. Da hätte ich lieber das hier:
http://www.domain.net/deu/

Grüße

aimcom ·

Ich kann dir die Homepage leider noch nicht direkt verlinken, da das Projekt derzeit noch nicht öffentlich ist. Aber ich werde versuchen, es zu erklären. 😉

Auf der Startseite (Adresse: /) gibt es verschiedene Links, der Link zur englischen Sprachversion heißt hier /english/home.html. Die restlichen Seiten sind verlinkt nach dem Schema /deutsch/kontakt/email.html oder /deutsch/impressum.html. Wenn ich nun auf die englische Seite /english/home.html gehe, kann ich von dort aus auf die deutsche Seite wieder zurückkehren. Der Link von dort zeigt auf /deutsch/willkommen.html. Das ist dieselbe Seite, die beim Aufruf von / erscheint. Vielleicht hilft's dir, wenn ich meine komplette RealURL-Konfiguration mal poste?

Mopps ·

Ich kann dir die Homepage leider noch nicht direkt verlinken, da das Projekt derzeit noch nicht öffentlich ist.

Will ich ja gar nicht. Mir gehts nur darum, wie interne Links auf deine Startseite "prinzipiell" aussehen. Meine Startseite ist auch nicht unter www.domain.net zu erreichen 😉

Vielleicht hilft's dir, wenn ich meine komplette RealURL-Konfiguration mal poste?

Das wäre sehr nett. Vielleicht kann ich da was finden.

Wie sieht denn deine "mehrsprachige" Seitenstruktur aus? One-Tree?

aimcom ·
Mopps schrieb

Vielleicht hilft's dir, wenn ich meine komplette RealURL-Konfiguration mal poste?

Das wäre sehr nett. Vielleicht kann ich da was finden.

Weil ich SysFolder zur Strukturierung der Seite verwende, habe ich eine leicht modifizierte Variante von RealURL eingesetzt. Das sollte auf dein Problem aber keine Auswirkungen haben. Nur nicht wundern, wieso da tx_realurl_jk steht. 😉

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT'] = array (
    'init' => array (
        'enableCHashCache' => true,
        'appendMissingSlash' => 'ifNotFile',
        'adminJumpToBackend' => true,
        'enableUrlDecodeCache' => true,
        'enableUrlEncodeCache' => true,
        'emptyUrlReturnValue' => '/deutsch',
    ),

    'pagePath' => array (
        'type' => 'user',
        'userFunc' => 'EXT:realurl/class.tx_realurl_jk.php:&tx_realurl_jk->main',
        'spaceCharacter' => '_',
        'languageGetVar' => 'L',
        'rootpage_id' => 1,
    ),

    'fileName' => array (
        'defaultToHTMLsuffixOnPrev' => 1,
        'acceptHTMLsuffix' => 1,
    ),

    'preVars' => array (
        0 => array (
            'GETvar' => 'L',
            'valueMap' => array (
                'deutsch' => '1',
                'english' => '2',
        ),
        'valueDefault' => 'deutsch',
      ),
    ),
);
Mopps schrieb

Wie sieht denn deine "mehrsprachige" Seitenstruktur aus? One-Tree?

Ja, und über alternative Seitensprachen werden die Namen der Navigationspunkte in den Sprachversionen festgelegt.

Mopps ·

Mmmm, irgendwie versteh ichs net, warum es nicht geht. Ich poste mal meine Konfi, vielleicht sieht jemand, warum es nicht geht.

Nochmal zur Erinnerung:
Die Sprachumschaltung mit realurl funktionieren. Ich bekomme wie du seiten wie /deu/kontakt/email.html. Links auf die deutsche Startseite sind leider deu.html anstatt /deu/startseite.html oder noch besser /deu/.

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl'] = array ( 
    '_DEFAULT' => array (
        
        'init' => array (
            'enableCHashCache' => '1',
            'appendMissingSlash' => 'ifNotFile',
            'enableUrlDecodeCache' => '1',
            'enableUrlEncodeCache' => '1',
            'postVarSet_failureMode' => '',
        ),
        
        'pagePath' => array (
            'type' => 'user',
            'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
            //'userFunc' => 'EXT:aoe_realurlpath/class.tx_aoerealurlpath_pagepath.php:&tx_aoerealurlpath_pagepath->main',
            'spaceCharacter' => '-',
            'languageGetVar' => 'L',
            'rootpage_id' => '4',
            'segTitleFieldList'=>'alias,nav_title,title,subtitle',
        ),
        
	'preVars' => array(
		array(
			'GETvar' => 'L',
			'valueMap' => array(
				'eng' => '1',
				'ita' => '2',
			),
			'valueDefault' => 'deu',
		),
	),
	
        'fixedPostVars' => array (
        ),
        
        'postVarSets' => array (
            '_DEFAULT' => array (
                
            ),
        ),
        
        'fileName' => array (
//
// if you don't want .html-URLs set the following to "false" (e.g. 'defaultToHTMLsuffixOnPrev' => false,)
// then you get http://www.yourdomain.com/imprint/ instead of http://www.yourdomain.com/imprint.html
//
            'defaultToHTMLsuffixOnPrev' => true,
            'index' => array (
                'page.html' => array(
		    'keyValues' => array (
		        'type' => 1,
		    ),
		),
                'rss.xml' => array (
                    'keyValues' => array (
                        'type' => '100',
                    ),
                ),
                'rss091.xml' => array (
                    'keyValues' => array (
                        'type' => '101',
                    ),
                ),
                'rdf.xml' => array (
                    'keyValues' => array (
                        'type' => '102',
                    ),
                ),
                'atom.xml' => array (
                    'keyValues' => array (
                        'type' => '103',
                    ),
                ),
            ),
        ),
    ),

);
aimcom ·

OK, du hast also die Standardsprache als Deutsch genommen. Mir ist aufgefallen, dass du folgenden Wert nicht gesetzt hast:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT'] = array (
    'init' => array (
        'emptyUrlReturnValue' => '/deutsch'
    )

Probier doch mal, den mit anzugeben, vielleicht löst es das Problem.[/b]