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

Rolf Gründler gruendler at ngi.de
Tue Sep 18 09:19:02 CEST 2007


Danke, Martin und Chris, für Eure Hinweise!

Leider komme ich damit noch nicht zu dem gewünschten Ergebnis. Ich möchte
die Referenzierung/Zuweisung in folgender Funktion verwenden:

function getPageIdFromAlias($alias)
 {
  $alias = strtolower($alias);
  $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))
  {

   // $GLOBALS['TSFE']->config['config.']['sys_language_uid'] = 0;

   return $row['uid'];
  }

   // if ($L = $GLOBALS['TSFE']->config['config.']['sys_language_uid'])

  if ($L = 1)     //   im Original:   if($L=$_GET['L'])
  {
   $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'];
   }
  }
  return 0;
 }

In der Orginalversion findet die Funktion zu einem "alias" die zugehörige
Seite. Zuerst schaut sie in der Tabelle "pages" nach. Findet sie eine Seite
mit dem "alias", wird die "uid" der Seite zurückgegeben. Falls nicht und
falls ein Sprachparameter in der URL vorkommt, wird das Gleiche für die
gewählte Sprache nochmal in der Tabelle "pages_language_overlay" probiert.
Findet sie den "alias" dort, wird die "pid", also die "uid" der zugehörigen
Seite aus "pages", zurückgegeben.

Meine Website ist zweisprachig angelegt: Deutsch (uid=0) und Spanisch
(uid=1). Da die Seite beim Aufruf in Spanisch erscheinen soll, ist im Setup
"config.sys_language_uid = 1" gesetzt, d.h. beim Weglassen des L-Parameters
erscheinen immer die spanischen Versionen der Seiten. Damit das bei
der Verwendung eines "alias" auch so läuft, habe ich die Funktion so
verändert, dass $L immer gleich 1 ist, also immer, wenn der "alias" in
"pages" (d.h. im Deutschen) nicht gefunden wird, wird
"pages_language_overlay" danach durchsucht und zwar für Spanisch
(sys_language_uid = 1), unabhängig davon, ob ein L-Parameter in der URL
vorkommt oder nicht.

Das funktioniert so auch wunderbar (natürlich mit verschiedenen Werten für
"alias" in den beiden Sprachen), nur muss für die deutsche Version der
Seiten mit "alias" noch der L-Parameter angegeben werden. Lässt man ihn weg,
erscheint die spanische Version, da dann ja "config.sys_language_uid = 1"
zur Wirkung kommt.

Meine Idee, den L-Parameter ganz loszuwerden, ist nun folgende: Für den
Fall, dass eine deutsche Seite für "alias" gefunden wird, wird
"config.sys_language_uid" auf 0 gesetzt. Dann sollte sie auch auf Deutsch
angezeigt werden. Das wollte ich mit der auskommentierten Zeile vor dem
ersten "return" erreichen. Es funktioniert aber nicht. Was ist daran nicht
ok?

Auch wenn ich

if ($L = 1)

durch

if ($L = $GLOBALS['TSFE']->config['config.']['sys_language_uid'])

ersetze, funktioniert das Ganze nicht mehr. Es erscheint dann bei jedem
"alias" immer die spanische Homepage, d.h., der "alias" wird nicht gefunden,
und d.h. $L wird etwas anderes als "1" zugewiesen, obwohl
"config.sys_language_uid = 1" ist.

Auch ohne den Punkt hinter "config" geht es nicht. Irgendwas ist da noch
nicht richtig. Aber was?

Darf ich nochmals um Eure Hilfe bitten. Danke!

Gruß Rolf



"Christian Wolff" <Chris at connye.com> schrieb im Newsbeitrag
news:mailman.1.1189976571.23436.typo3-german at lists.netfielders.de...
> On Sun, 16 Sep 2007 19:48:31 +0200, Martin Holtz <typo3 at martinholtz.de>
> wrote:
>
> > Hallo Rolf,
> >
> >> weiß jemand, wie man Einstellungen im Objekt "config" (z.B.
> >> system_language_uid) in PHP referenziert, also wie man den Wert
ausliest
> >> und wie man ihn durch eine Zuweisung verändern kann?
> > $GLOBALS['TSFE']->config['config']['sys_language_uid']
> >
> > gruß,
> > martin
>
> Hallo Martin.
>
> ich denke du suchst:
> $GLOBALS['TSFE']->config['config.']['sys_language_uid']
>
> man beachte den punkt nacht dem config. der macht den unterschied.
>
> wenn typo script in ein array konvertiert wird.
> gibt es immer
> zwei tpypen von "schlüsseln" die mit punkt am ende die ein array auf  die
> nächste ebene
> darstellen und die ohne punkt die einen wert enthalten.
>
> als kleines beispiel:
>
> TS:
> page = PAGE
> page.10 = TEXT
> page.10.value = Hallo Welt!
>
> wird zu folgendem PHP Array:
>
> array(
> 'page' => 'PAGE',
> 'page.' => array (
> '10' => 'TEXT',
> '10.' => array (
> 'value' => 'Hallo Welt!',
> )
> )
> )
>
> Gruss chris
>
> -- 
> Christian Wolff // Berlin
> http://www.connye.com
>
> Latest Projects:
> http://www.flycall.de | http://www.atr24.de| http://www.titanic.de




More information about the TYPO3-german mailing list