Zum Inhalt springen

realurl für Sprachen

Erstellt am 18. Mai 2007 · 4 Antworten · letzte Antwort am 2. Juli 2007

Tags: RealURL, Frage

slashwalker ·

Hallo,
wie kann man realurl auch für Sprachvariablen nutzen?

Also aus www.domain.de/seite/?L=1
soll www.domain.de/en/seite/
und aus www.domain.de/seite/ bzw. www.domain.de/seite/?L=0
soll www.domain.de/de/seite/
werden.

Meine bisherige .htaccess:

# Enable URL rewriting
RewriteEngine On
RewriteRule ^(404|typo3|typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php)/ - [L]
RewriteRule ^typo3$ typo3/index_re.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php 
ErrorDocument 404 /index.php?id=notfound
ErrorDocument 403 /index.php?id=notfound
einpraegsam.​net ·

Ich schicke dir mal den kompletten Code aus der localconf.php:

//Beginn REAL URL
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tstemplate.php']['linkData-PostProc'][] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->encodeSpURL';
$TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods-PostProc'][] = 'EXT:realurl/class.tx_realurl.php:&tx_realurl->decodeSpURL';

$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_urldecodecache'] = 'tx_realurl_urldecodecache';
$TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables']['tx_realurl_urlencodecache'] = 'tx_realurl_urlencodecache';

$TYPO3_CONF_VARS['FE']['addRootLineFields'].= ',tx_realurl_pathsegment';

$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
    'init' => array(
        'enableCHashCache' => 1
    ),
    'preVars' => array(
        array(
            'GETvar' => 'no_cache',
            'valueMap' => array(
                'no_cache' => 1,
            ),
            'noMatch' => 'bypass',
        	),
    	array(
        	'GETvar' => 'L',
        	'valueMap' => array(
            	'en' => '1',
            	'cs' => '2',
        	),
        	'noMatch' => 'bypass',
        	),
    	array(
        	'GETvar' => 'type',
        	'valueMap' => array(
            	'type' => '96',
        	),
        	'noMatch' => 'bypass',
        	),
    	),
    'fileName' => array (
        'index' => array(
            'index.html' => array(
                'keyValues' => array(
					
                )
            ),
            'barrierefrei.html' => array(
                'keyValues' => array(
					'type' => 96,
                )
            ),
            'print.html' => array(
                'keyValues' => array(
					'type' => 94,
                )
            ),
		),
    ),
    'postVarSets' => array(
        '_DEFAULT' => array (
            'index' => array(
                array(
                    'GETvar' => '',
                ),
            ),

            'article' => array(
                array(
                    'GETvar' => 'tx_ttnews[tt_news]',
                ),
                array(
                    'GETvar' => 'tx_ttnews[backPid]',
                ),
            ),
            'category' => array(
                array(
                    'GETvar' => 'tx_ttnews[cat]',
                ),
            ),
            'neste' => array(
                array(
                    'GETvar' => 'tx_ttnews[pointer]',
                ),
			),
			'bild' => array(
				array(
					'GETvar' => 'tx_wtgallery_pi1[picid]',
				),
			),
			'vorschau' => array(
				array(
					'GETvar' => 'tx_wtgallery_pi1[thumbid]',
				),
			),
			'kategorie' => array(
				array(
					'GETvar' => 'tx_wtgallery_pi1[cat]',
				),
			),
			'kategorienummer' => array(
				array(
					'GETvar' => 'tx_wtgallery_pi1[catno]',
				),
			),
        ),
    ),
    'pagePath' => array(
        'type' => 'user',
        'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
        'spaceCharacter' => '-',
        'languageGetVar' => 'L',
        'expireDays' => 0,
    ),
);
// ENDE REAL URL
jsf ·

Hallo,
ich arbeite zurzeit am Umzug bisheriger Webinhalte nach Typo 3.
Dazu habe ich Typo3 in einem Unterordner /t/ installiert.
Mit Realurl will ich zum Einen halt die url gestalten und zum Anderen die Zweisprachigkeit sicherstellen.
Ich habe die mitgelieferte .htaccess unverändert aus der Extension in meinen Typo3 Unterordner verschoben und das Script von Wunschtacho an die vorhandene localconf.php angefügt.
Jetzt passiert, dass ich zwar die Startseite aufrufen kann (die dann im Browseradressfenster ohne realurl steht) aber beim Aufruf der Unterseiten immer die Meldung bekomme, dass diese Seiten nicht existieren.
Der link zu den unterseiten ist jedesmal
www.domain.de/t/menue/pfad/zu/der/datei/index.html
Komischerweise steht auch der Zusatz /en/ nur bei der englischen Seite nach dem /t/. Auf der deutschen Seite fehlt dieser Eintrag. Im php von Wunschtacho habe ich nur die tschechische auf die deutsche Sprache mit Sprach ID 0 gesetzt.
Da ich sowohl htaccess als auch php Laie bin wäre eine etwas auführlichere Erklärung nett.
Danke Jens

[Nichts ist, bevor es ist.][/quote]

slashwalker ·

@wunschtacho

Ihc hab jetzt grad ein kleines Problem mit dem realURL. Deine localconf.php funktioniert super. Aber ich krieg das Sprachmenü nicht richtig in den Griff.

<?php
$query = "SELECT * FROM pages_language_overlay WHERE pid=".$GLOBALS["TSFE"]->id.$GLOBALS["TSFE"]->sys_page->enableFields("pages_language_overlay")." GROUP BY sys_language_uid"; 
$query2 = "SELECT alias FROM pages WHERE uid=".$GLOBALS["TSFE"]->id.""; 
$res = mysql(TYPO3_db,$query); 
$res2=mysql(TYPO3_db,$query2);
$langArr=array(); 
while($row=mysql_fetch_assoc($res)) { 
     $langArr[$row["sys_language_uid"]]=$row["title"]; 
} 
$alias=mysql_fetch_row($res2);
$flags = array();
$flags[] = '<a href="/de/'.$alias[0].'" title="Deutsch"><img src="pics/flags/d_flag.gif" title="Deutsch" alt="Deutsch"></a>'; 
$flags[] = '<a href="/en/'.$alias[0].'" title="English"><img src="pics/flags/e_flag.gif" title="English" alt="English"></a>';

$content = implode("",$flags);
?>

Das sorgt für Links www.domain.de/en/seitenalias/index.html
Soweit auch ganz ok.

Aber, wenn ich nun tiefer in der Seite bin z.B. www.domain.de/de/startseite/unterseite/artikel/index.html und will dann auf englisch umstellen, macht das Menü natürlich www.domain.de/en/artikel/index.html , weil es sich ja nur den Alias aus der DB holt. Es funktioniert also nur, wenn ich gleich auf der Startseite auf englisch umstelle und mich dann durchklicke. Das ist aber bissel unbefriedigend. Wie kann ich ihm nun den aktuellen Pfad sagen und im sagen, wo er den Alias ersetzen muss? Oder dem realURL beibringen das er statt dem kompletten Pfad nur den Alias übernimmt. Also das genrell nur www.domain.de/seite/index.html statt www.domain.de/pfad/zur/seite/index.html erzeugt wird.

Steh grad echt auf dem Schlauch.