[TYPO3-german] Referenzierung von config-Einstellungen in PHP

Martin Holtz typo3 at martinholtz.de
Wed Sep 26 11:34:25 CEST 2007


Hi Rolf,

> Wird in der Extension "multilingual_alias" zu:

Also du möchtest doch haben:
if (!isset($_GET['L'])) {
        // Wenn Kein L da ist, dann soll er in Spanisch nachschauen, weil das ja
die Default-Sprache ist
}
if (0 == $_GET['L']) { // Deutsch
        
}
if (1 == $_GET['L']) { // Spanisch
        
}


Und ich hätte gedacht, dass dir das hier weiterhilft:

function getPageIdFromAlias($alias) {
$alias = strtolower($alias);
if (!isset($_GET['L']) || 1 == $_GET['L']) { // Spanisch
        $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('pid',
        'pages_language_overlay',
        'alias='.$GLOBALS['TYPO3_DB']->fullQuoteStr($alias,
        'pages_language_overlay').' AND sys_language_uid='.$L);
        if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                return $row['pid'];
        }
}
if (0 == $_GET['L']) { // Deutsch
        $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('uid', 'pages',
        'alias='.$GLOBALS['TYPO3_DB']->fullQuoteStr($alias, 'pages').' AND pid>=0
        AND pages.deleted=0'); // "AND pid>=0" is because of versioning...
        if ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){
                return $row['uid'];
        }
}
return 0;
} // end function

> Allerdings muss für die deutsche Version der Seiten weiterhin der
> L-Parameter in der URL angegeben werden. Ohne diesen findet die Funktion
> "getPageIdFromAlias" zwar die richtige Seite, da aber
> "config.sys_language_uid = 1" gesetzt ist, wird im späteren Verlauf des
> Seiten-Rendering die spanische Version produziert. Die Funktion
> "getPageIdFromAlias" gibt nur die richtige "uid" aus "pages" zurück.
> Welche Sprachversion dann zur Anzeige kommt, hängt von anderen Faktoren
> ab.
aber ich glaube erst jetzt begreife ich, was du möchtest:
Die Sprache soll in Abhängigkeit davon gesetzt werden, ob der Alias in
Deutsch oder Spanisch gefunden wird?

Ich halte das für Fehleranfällig und bißchen schwierig - der L-Parameter
wird ja automatisch gesetzt?

> Um den L-Parameter auch für die deutsche Version der Seiten loszuwerden,
> war meine Idee nun, in "getPageIdFromAlias" wenn nötig, die Seitensprache
> (also die Einstellung für "config.sys_language_uid") umzuschalten. Doch
> das scheint nicht zu funktionieren. Es könnte sein, dass
> "$GLOBALS['TSFE']->config['config']['sys_language_uid']" dort nicht
> definiert ist. Wäre es definiert, sollte der Ausdruck:
Was passiert, wenn Du $_GET['L'] = "1"; (bzw. 0 setzt, jenachdem wo der
Alias gefunden wird?)

Es gibt auch ne Extension die automatisch die richtige Sprache erkennt (an
den Headern die der Browser zum Server schickt) - danach solltest Du mal
suchen. Die sollte ja auch die Spracheinstellung ändern können.

> Meine letzte Idee ist nun, in der Funktion den L-Parameter zu verändern,
> wenn ein deutscher Alias gefunden wird. Der L-Parameter kann dort ja
> offensichtlich mit "$_GET['L']" referenziert werden, also könnte er rein
> theoretisch auch verändert werden.
> 
> Die Frage ist nun: Kann man dem L-Parameter in PHP einen Wert zuweisen und
> wenn ja, wie lautet die Syntax?
$_GET['L'] = 1; // oder 0

> Uff - wenn das nicht geht, dann geb ich wirklich Ruhe!
Naja, Du hast ja Ausdauer, kannst ja vorher noch diese Extension suchen
(frag mich nicht nach dem Namen, ist aber schon älter) und auf
buzz.typo3.org hat Michael Stucki eine Chart vorgestellt, wo der Ablauf von
TYPO3 aufgezeigt wird. Vielleicht hilft das für das Verständnis.

viel Erfolg & gruß,
martin


More information about the TYPO3-german mailing list