Zum Inhalt springen

RealURL / Link zur Sprachen-Startseite

Erstellt am 14. September 2009 · 6 Antworten · letzte Antwort am 5. Oktober 2009

Tags: RealURL, Frage

tmicha ·

Hallo,

ich habe eine zweisprachige Seite (1:1 Modus) mit Typo3 4.2.8 erstellt und die RealURL-Erweiterung im Einsatz.

Über preVars wird in der URL die Sprache unterschieden.
Meine Links haben das Format

http://www.domain.de/de/hotel/lage.html
http://www.domain.de/en/hotel/location.html

Leider kann ich aktuell nicht auf die "Startseite" in der jeweiligen Sprache Linken.

Wenn ich die Seite ohne Parameter aufrufe, wird natürlich die deutsche Startseite angezeigt, aber wenn ich die im Sprachmenü generierten Links für die Sprachen-Startseite, also z.B. http://www.domain.de/en.html oder http://www.domain.de/de.html aufrufe, bekomme ich eine Typo3-Fehlermeldung

Error!
Reason: "de.html" could not be found, closest page matching is

angezeigt.
Wenn ich die Seiten mit den nicht-SEO-Links http://www.domain.de/index.php?id=15&L=1 bzw. http://www.domain.de/index.php?id=15&L=2 aufrufe, wird die Seite ganz normal angezeigt.

In den tx_realurl-Tabellen in der Datenbank habe ich auch keine Einträge für die Page gefunden (die gleichzeitig auch Rootpage ist).

Hat jemand schon dieses Problem lösen können oder eine Idee, was ich probieren kann?
Hier meine Konfiguration:

$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
 'init' => array(
  'enableCHashCache' => 1,
  'enableUrlDecodeCache' => 1,
  'enableUrlEncodeHash' => 1,
  'appendMissingSlash' => 'ifNotFile',
 ),
 'rewrite' => array(),
 'preVars' => array(
    array(
        'GETvar' => 'no_cache',
        'valueMap' => array(
            'no_cache' => 1,
        ),
        'noMatch' => 'bypass',
    ),
    array(
         'GETvar' => 'L',
         'valueMap' => array(
             'de' => '1',
             'en' => '2',
         ),
		'valueDefault' => 'de',
     ),
	 
	array (
	 	'GETvar' => 'lang',
		'valueMap' => array (
			'de' => '1',
			'en' => '2'
       	),
		'noMatch' => 'bypass',
	),
 ),
 'pagePath' => array(
  'type' => 'user',
  'userFunc' =>
   'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
  'spaceCharacter' => '-',
  'languageGetVar' => 'L',
  'expireDays' => 3,
  'rootpage_id' => '15' // WICHTIG: Hier muss deine root ID eingetragen werden.
 ),
 'fileName' => array (
  'defaultToHTMLsuffixOnPrev' => 1,
  'index' => array(
   'page.html' => array(
    'keyValues' => array (
     'type' => 1,
    ),
   ),
  ),
 ),
);

Gruß Micha

just2b ·

sollte wohl eher 'de' => '0', sein, sonst hast du ja 3 sprachen

abgesehen davon find ich hier ein nomatch => bypass besser weil dann bei der standardsprache die url kürzer ist

tmicha ·

Danke für den Tipp, ich hatte zwischenzeitlich schon die Sprach-IDs korrigiert (hatte das Sprachkonzept von Typo3 anfangs nicht richtig verstanden) und hier noch nicht gepostet. Hier meine aktuell verwendete Konfiguration:

$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
 'init' => array(
  'enableCHashCache' => 1,
  'enableUrlDecodeCache' => 0,
  'enableUrlEncodeHash' => 0,
  'appendMissingSlash' => 'ifNotFile',
 ),
 'rewrite' => array(),
 'preVars' => array(
    array(
        'GETvar' => 'no_cache',
        'valueMap' => array(
            'no_cache' => 1,
        ),
        'noMatch' => 'bypass',
    ),
    array(
         'GETvar' => 'L',
         'valueMap' => array(
             'de' => '0',
             'en' => '2',
         ),
		'valueDefault' => 'de',
		# 'noMatch' => 'bypass',
     ),
	array (
	 	'GETvar' => 'lang',
		'valueMap' => array (
			'de' => '0',
			'en' => '2'
       	),
		'noMatch' => 'bypass',
	),
 ),
 'pagePath' => array(
  'type' => 'user',
  'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
  'spaceCharacter' => '-',
  'languageGetVar' => 'L',
  'expireDays' => 3,
  'rootpage_id' => '15', // WICHTIG: Hier muss deine root ID eingetragen werden.
  
'segTitleFieldList' => 'nav_title,title,alias,tx_realurl_pathsegment',
'disablePathCache' => 1,
 ),
 'fileName' => array (
  'defaultToHTMLsuffixOnPrev' => 1,
  'index' => array(
   'page.html' => array(
    'keyValues' => array (
     'type' => 1,
    ),
   ),
  ),
 ),
);

Aber das Problem besteht leider unverändert.

WhiteShadow ·

Habe eine automatische RealURL Konfiguration von einer Extension. danp noch was war das glaube ich. Und bei mir ist das so wie du das haben willst. Hier die Konfiguration:

$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
        'init' => array(
            'enableCHashCache' => 1,
            'appendMissingSlash' => 'ifNotFile',
            'enableUrlDecodeCache' => 1,
            'enableUrlEncodeCache' => 1,
            'respectSimulateStaticURLs' => 0,
            'postVarSet_failureMode'=>'redirect_goodUpperDir',
        ),
    'redirects_regex' => array (
    
    ),
    'preVars' => array(
                        array(
                                'GETvar' => 'no_cache',
                                'valueMap' => array(
                                    'no_cache' => 1,
                                ),
                                'noMatch' => 'bypass',
                        ),
                         array(
                             'GETvar' => 'L',
                             'valueMap' => array(
                                                'en' => '1',
                                                'ru' => '2',
                                        ),
                                'noMatch' => 'bypass',
                        ),
                ),
     'pagePath' => array(
            'type' => 'user',
            'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
            'spaceCharacter' => '-',
            'languageGetVar' => 'L',
            'expireDays' => 7,
            'rootpage_id' => 1,
        ),


      'postVarSets' => array(
            '_DEFAULT' => array(
                // news archive parameters
                'archive' => array(
                    array(
                        'GETvar' => 'tx_ttnews[year]' ,
                        ),
                    array(
                        'GETvar' => 'tx_ttnews[month]' ,
                            'valueMap' => array(
                            'january' => '01',
                            'february' => '02',
                            'march' => '03',
                            'april' => '04',
                            'may' => '05',
                            'june' => '06',
                            'july' => '07',
                            'august' => '08',
                            'september' => '09',
                            'october' => '10',
                            'november' => '11',
                            'december' => '12',
                            )
                        ),
                    ),
                // news pagebrowser
                'browse' => array(
                    array(
                        'GETvar' => 'tx_ttnews[pointer]',
                        ),
                    ),
                // news categories
                'select_category' => array (
                    array(
                        'GETvar' => 'tx_ttnews[cat]',
                        ),
                    ),
                // news articles and searchwords
                'article' => array(
                    array(
                        'GETvar' => 'tx_ttnews[tt_news]',
                        'lookUpTable' => array(
                            'table' => 'tt_news',
                            'id_field' => 'uid',
                            'alias_field' => 'title',
                            'addWhereClause' => ' AND NOT deleted',
                            'useUniqueCache' => 1,
                            'useUniqueCache_conf' => array(
                                'strtolower' => 1,
                                'spaceCharacter' => '-',
                                ),
                            ),
                        ),
                    array(
                        'GETvar' => 'tx_ttnews[swords]',
                        ),
                    ),
                ),             
            ),

      'fileName' => array(
            'defaultToHTMLsuffixOnPrev'=>1,
            'index' => array(
                '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,
                    ),
                ),
            ),
        ),
 );
tmicha ·

Hallo,

vielen Dank an WhiteShadow für die Konfiguration. Damit wird bei mir bei Klick auf die Sprachlinks auf der Startseite zumindest keine Fehlerseite mehr angezeigt.

Leider wird auch nicht die Startseite (id=15) angezeigt sondern offenbar eine Seite mit der ID 38.

Hier meine Seitenstruktur:

+ Webseite (id=0)
++ General Storage (id=14)
++ Willkommen (id=15)
+++ Haupnavi 1 (id=1)
++++ Punkt 1.1 (id=2)
++++ Punkt 1.2 (id=3)

[...]

+++ Hauptnavi 4 (id=38-) (Im Menü verbergen)
++++ Punkt 4.1 (id=12)
++++ Punkt 4.2 (id=13)

Dazu ist noch zu sagen, dass die Seiten der Hauptnavigationspunkte leer sind und nur zur Strukturierung der Navigation dienen. Für den 4. Punkt ist auch angegeben, dass dieser im Menü verborgen werden soll.

Und die Konfiguration auf Basis der von WhiteShadow geposteten Konfiguration:

$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
	'init' => array(
		'enableCHashCache' => 1,
		'appendMissingSlash' => 'ifNotFile',
		'enableUrlDecodeCache' => 1,
		'enableUrlEncodeCache' => 1,
		'respectSimulateStaticURLs' => 0,
		'postVarSet_failureMode'=>'redirect_goodUpperDir',
	),
	'redirects_regex' => array (
	),
	'preVars' => array(
		array(
			'GETvar' => 'no_cache',
			'valueMap' => array(
				'no_cache' => 1,
			),
			'noMatch' => 'bypass',
		),
		array(
			'GETvar' => 'L',
			'valueMap' => array(
				'de' => '0',
				'en' => '2',
			),
			'valueDefault' => 'de',
			// 'noMatch' => 'bypass',
		),
	),
	'pagePath' => array(
		'type' => 'user',
		'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
		'spaceCharacter' => '-',
		'languageGetVar' => 'L',
		'expireDays' => 7,
		'rootpage_id' => 15,
	),
	'postVarSets' => array(
		'_DEFAULT' => array(
		),             
	),
	'fileName' => array(
		'defaultToHTMLsuffixOnPrev'=>1,
		'index' => array(
		),
	),
);

Das Sprachmenü wird mit folgendem Code generiert:

lib.langmenu = COA
lib.langmenu{
  wrap = |
  10 = IMAGE
  10.file < temp.gifdeutsch
  10.stdWrap.typolink.parameter.data = page:uid
  10.stdWrap.typolink.additionalParams = &L=0
  10.stdWrap.typolink.ATagParams = lang="de" xml:lang="de"
  10.stdWrap.wrap = | &nbsp;
 
  20 = IMAGE
  20.file < temp.gifenglish
  20.stdWrap.typolink.parameter.data = page:uid
  20.stdWrap.typolink.additionalParams = &L=2
  20.stdWrap.typolink.ATagParams = lang="en" xml:lang="en"

}

In der Datenbank habe ich dazu noch folgendes gefunden:

In der Tabelle tx_realurl_urldecodecache:
spurl= de.html
page_id= 38
rootpage_id= 15

spurl= en.html
page_id= 38
rootpage_id= 15

und in der Tabelle tx_realurl_urlencodecache:

origparams= id=15&L=0
content= de.html
page_id= 15

origparams= id=38&L=2
content= en.html
page_id= 38

Was mir ja widersprüchlich erscheint. Kommt RealURL u.U. nicht mit leeren Navigationscontainern klar?

Gruß Micha