Zum Inhalt springen

Bedingung [globalVar = GP:L = 1] fälschlicherweise immer wahr!

Erstellt am 9. Januar 2009 · 15 Antworten · letzte Antwort am 12. Januar 2009

Tags: Frage

fearistic ·

Hallo,

ich habe folgendes TypoScript:

  config {  
  // Spracheinstellungen
  linkVars = L
  uniqueLinkVars = 1
  sys_language_mode = content_fallback
  sys_language_overlay = hideNoneTranslated
  
  sys_language_uid = 0
  language = de
  // Je nach Serverumgebung funktionieren verschiedene Werte:
  // de_DE, de_DE.utf8, de_DE@euro
  locale_all = de_DE.utf8@euro
  htmlTag_langKey = de
  plugin.meta.language = de
  }
  
  [globalVar = GP:L = 1] // Englisch, sys_language.uid = 1
  config {
  sys_language_uid = 1
  language = en
  locale_all = en_GB
  htmlTag_langKey = en
  plugin.meta.language = en
  }
  [global]

Nun ist es so, dass immer die Werte von [globalVar = GP:L = 1] verwendet werden, egal, welchen L Parameter ich an die URL hänge oder auch keinen.
Entferne ich [globalVar = GP:L = 1], so erhalte ich immer die Werte Standardwerte, wie ich es auch erwarte.

Was ist an der Condition falsch, dass sie immer wahr ist?

Ich stehe total auf dem Schlauch. Ich freue mich auf Antworten jedweder Art!

fearistic ·

Nein.

Hie das komplette TS des Erweiterungstemplates:

// Cache während der Entwicklung ausschalten, danach unbedingt wieder einschalten
config.no_cache = 1

// Allgemeine Einstellungen

config {
  pageTitleFirst = 1

  // E-Mail-Adresse für Harvester verschleiern
  spamProtectEmailAddresses = ascii
  spamProtectEmailAddresses_atSubst = <span>&#064;</span>

  // Cache-Zeitraum festlegen
  cache_period = 86400
  
  // Spracheinstellungen
  linkVars = L
  uniqueLinkVars = 1
  sys_language_mode = content_fallback
  sys_language_overlay = hideNoneTranslated
  
  sys_language_uid = 0
  language = de
  // Je nach Serverumgebung funktionieren verschiedene Werte:
  // de_DE, de_DE.utf8, de_DE@euro
  locale_all = de_DE.utf8@euro
  htmlTag_langKey = de
  plugin.meta.language = de
  }
  
  [globalVar = GP:L = 1] // Englisch, sys_language.uid = 1
  config {
  sys_language_uid = 1
  language = en
  locale_all = en_GB
  htmlTag_langKey = en
  plugin.meta.language = en
  }
  [global]

  config.dateFormat = %A %e. %B %Y
  config.timeFormat = Uhr %H:%M Sek %S
fearistic ·

Nein, das ist es ja. Ich hatte mal einen Fehler, das lag daran, dass die Bedingung innerhalb der geschweiften Klammern war. Den hatte ich behoben, doch es funktioniert immer noch nicht.

Das beste jedoch ist, dass alles richtig gesetzt wird, wenn ich die Condition als wahr setzte im TS Object Browser (also die Setup Config).

Wenn es hilft, könnte ich die einen Admin Backend Zugang geben...

Spyker ·

wenn du Probleme in verbindung mit RealURL hast dann kannst du dir auch das: uniqueLinkVars = 1
sparen.

RealURL verarbeitet selbst auch keine doppelten Parameter.

Einen Fehler kann ich aber auch nicht direkt sehen... :-(

Grüße,
Tim

just2b ·

ja ich kanns mir mal anschauen

@ tim: doppelte parameter sind nur für das menschliche auge hässlich, realurl & co ist das egal, der letzte zieht

georg

fearistic ·

So, folgendes funktioniert NICHT:

  // Spracheinstellungen
  linkVars = L
  uniqueLinkVars = 1
  sys_language_mode = content_fallback
  sys_language_overlay = hideNoneTranslated
  }
 
  [globalVar = GP:L = 0]
  config {
  sys_language_uid = 0
  language = de
  // Je nach Serverumgebung funktionieren verschiedene Werte:
  // de_DE, de_DE.utf8, de_DE@euro
  locale_all = de_DE.utf8@euro
  htmlTag_langKey = de
  plugin.meta.language = de
  }
  [globalVar = GP:L = 1] // Englisch, sys_language.uid = 1
  config {
  sys_language_uid = 1
  language = en
  locale_all = en_GB
  htmlTag_langKey = en
  plugin.meta.language = en
  }
  [global]

Das hier funktioniert aber wie gewünscht:

  // Spracheinstellungen
  linkVars = L
  uniqueLinkVars = 1
  sys_language_mode = content_fallback
  sys_language_overlay = hideNoneTranslated
  }
 
  [globalVar = GP:L = 1] // Englisch, sys_language.uid = 1
  config {
  sys_language_uid = 1
  language = en
  locale_all = en_GB
  htmlTag_langKey = en
  plugin.meta.language = en
  }
  [globalVar = GP:L = 0]
  config {
  sys_language_uid = 0
  language = de
  // Je nach Serverumgebung funktionieren verschiedene Werte:
  // de_DE, de_DE.utf8, de_DE@euro
  locale_all = de_DE.utf8@euro
  htmlTag_langKey = de
  plugin.meta.language = de
  }
  [global]

Einfach nur vertauscht und mit zwei Bedingungen.

Hat jemand eine Idee warum dem so ist? Jetzt trickse ich ihn ja nur aus. Da muss ich gleich mal testen wie es mit einer dritten Sprache ist, ob dann die Bedingung bei ID 2 auch immer wahr ist. und ich dann mit dieser Version maximal zwei Sprachen nutzen kann.

just2b: Ich schreibe dir eine PN, vielen Dank dass du dir das ansehen möchtest.

just2b ·

Hallo,

ich kapier nicht was dein Problem ist, nur das mit den metatags?

plugin.meta.language = en muss natürlich außerhalb von config {} stehen

und conditions musst du immer mit [global] oder [end] beenden, glaub nicht dass du einfach so eine neue danach starten kannst

sonst schaut ja alles ok aus
georg

fearistic ·

Ok, nochmal verbessert (und erneut getestet):
So geht es NICHT:

  // Spracheinstellungen
  linkVars = L
  uniqueLinkVars = 1
  sys_language_mode = content_fallback
  sys_language_overlay = hideNoneTranslated
  }
 
  [globalVar = GP:L = 0]
  config {
  sys_language_uid = 0
  language = de
  // Je nach Serverumgebung funktionieren verschiedene Werte:
  // de_DE, de_DE.utf8, de_DE@euro
  locale_all = de_DE.utf8@euro
  htmlTag_langKey = de
  }
  plugin.meta.language = de
  [global]
  
  [globalVar = GP:L = 1] // Englisch, sys_language.uid = 1
  config {
  sys_language_uid = 1
  language = en
  locale_all = en_GB
  htmlTag_langKey = en
  }
  plugin.meta.language = en
  [global]

So klappt es:

  // Spracheinstellungen
  linkVars = L
  uniqueLinkVars = 1
  sys_language_mode = content_fallback
  sys_language_overlay = hideNoneTranslated
  }
  
  [globalVar = GP:L = 1] // Englisch, sys_language.uid = 1
  config {
  sys_language_uid = 1
  language = en
  locale_all = en_GB
  htmlTag_langKey = en
  }
  plugin.meta.language = en
  [global]
 
  [globalVar = GP:L = 0]
  config {
  sys_language_uid = 0
  language = de
  // Je nach Serverumgebung funktionieren verschiedene Werte:
  // de_DE, de_DE.utf8, de_DE@euro
  locale_all = de_DE.utf8@euro
  htmlTag_langKey = de
  }
  plugin.meta.language = de
  [global]

Ich vergleiche für Deutsch und Englisch im Quelltext jeweils
"<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">"
der nur auf de in der letzten Variante steht wenn als Sprache die Standardsprache gewählt wird, ansonsten immer en...

fearistic ·

So hatte ich es ganz am Anfang (sihe Threadstart). Dann ist aber immer die Condition mit L=1 wahr, daher dieser Umweg mit zwei Bedingungen und der L=0 auch als letztes, damit die erste überschrieben wird, wenn die Dafault-Language ausgewählt ist.

fearistic ·

Ich habe es nun mit drei Sprachen:

  // Spracheinstellungen
  linkVars = L
  uniqueLinkVars = 1
  sys_language_mode = content_fallback
  sys_language_overlay = hideNoneTranslated
  }
  
  [globalVar = GP:L = 1] // Englisch, sys_language.uid = 1
  config {
  sys_language_uid = 1
  language = en
  locale_all = en_GB
  htmlTag_langKey = en
  }
  plugin.meta.language = en
  [global]
  
  [globalVar = GP:L = 2] // Indonesisch, sys_language.uid = 2
  config {
  sys_language_uid = 2
  language = id
  locale_all = id_ID
  htmlTag_langKey = id
  }
  plugin.meta.language = id
  [global]
 
  [globalVar = GP:L = 0]
  config {
  sys_language_uid = 0
  language = de
  // Je nach Serverumgebung funktionieren verschiedene Werte:
  // de_DE, de_DE.utf8, de_DE@euro
  locale_all = de_DE.utf8@euro
  htmlTag_langKey = de
  }
  plugin.meta.language = de
  [global]

Wenn ich nicht die Bedingung "[globalVar = GP:L = 0]" zuletzt hätte, hätte ich stets die Einstellungen für Indonesisch!
Jetzt habe ich "nur" für die Sprachen Englisch und Indonesisch die indonesischen Einstellungen...

Hat jemand eine vermutung warum die Bedingungen immer true zurückgeben, wenn die Abfrage > 0 ist?

fearistic ·
just2b schrieb

und conditions musst du immer mit [global] oder [end] beenden, glaub nicht dass du einfach so eine neue danach starten kannst

Warum tut dies dann Kasper in seiner Anleitung:
Frontend Localization Guide - Extension Key: doc_l10nguide
Seite 9:

#Achtung: Der folgende Code funktioniert nicht (ergibt diverse Fehler)!
0: # Loca l i z a t i o n :
1: config {
2: linkVars = L
3: }
4: [globalVar = GP:L=1]
5: config {
6: sys_language_uid = 1
7: language = dk
8: locale_all = da_DK
9: metaCharset = iso-8859-1
10: }
11: [globalVar = GP:L=2]
12: config {
13: sys_language_uid = 2
14: language = ru
15: }
16: [global]

Hat jemand eine Vermutung warum die Bedingungen bei mir immer true zurückgeben, wenn die Abfrage > 0 ist?

kraftb ·

Hallo !

Ich glaube ich weiss wo das problem liegt ...

nimm einfach mal das kommentar weg. so wie ich das sehe (hab es nur kurz getestet) verhält sich der typo3 TS parser anders wenn ein kommentar in der condition zeile ist ...

grüsse,
Bernhard

fearistic ·

Das war es!

Ich kann gar nicht ausdrücken, wie glücklich mich dein Beitrag macht. Vielen, vielen Dank.

Auf die Idee wäre ich nie gekommen.