Zum Inhalt springen

PIDinRootline -

Erstellt am 10. Juni 2013 · 4 Antworten · letzte Antwort am 10. Juni 2013

Tags: Frage

datomtom ·

Danke an die vielen super Beiträge im TYPO3.net Forum - waren mir schon eine große Hilfe. Nun sitze ich aber schon wieder viel zu lange an einem Problem, und bekomme es einfach nicht hin #paralyzed# ... sorry, wenn das ein wenig kompliziertes TS ist, bin noch ein Neuling, aber recht begeistert von TYPO3.

Ausgangslage: Ich möchte mittels CASE den Wert für NO.wrapItemAndSub abhängig von [PIDinRootline] anpassen. Da Conditions ja nicht innerhalb geschweifter Klammern stehen dürfen, habe ich eine Variable angelegt (vielleicht ginge das mit einem Array effizienter?). Habe jedenfalls auch den Wert meiner Variable RootLevelSwitch über das Template ausgegeben und die wird richtig angelegt. Trotzdem scheint die CASE Abfrage nicht zu funktionieren, da ich immer nur den default-Wert zurückbekomme. 🙁

Sieht jemand, was ich da falsch mache? Kann es irgendwas mit der key.field - Abfrage zu tun haben?

RootLevelSwitch = TEXT
[PIDinRootline = 2]
RootLevelSwitch.value = 2
[global]
[PIDinRootline = 3]
RootLevelSwitch.value = 3
[global]
[PIDinRootline = 4]
RootLevelSwitch.value = 4
[global]
[PIDinRootline = 5]
RootLevelSwitch.value = 5
[global]
[PIDinRootline = 6]
RootLevelSwitch.value = 6
[global]

nav = HMENU
nav {
  entryLevel = 0
  1 = TMENU
  1 {
    expAll = 1
    wrap = <ul class="left">|</ul>
    NO.wrapItemAndSub.stdWrap.override.cObject = CASE
    NO.wrapItemAndSub.stdWrap.override.cObject {
      key.field =< RootLevelSwitch
      default = TEXT
      default.value = <li class="home">|</li>
      2 = TEXT
      2.value = <li class="item2">|</li>
      3 = TEXT
      3.value = <li class="item3">|</li>
      4 = TEXT
      4.value = <li class="item4">|</li>
      5 = TEXT
      5.value = <li class="item5">|</li>
      6 = TEXT
      6.value = <li class="item6">|</li>
    }
    ACT < .NO
    ACT = 1
    CUR < .NO
    CUR = 1
    CUR {
    }
  }
  2 = TMENU
  2 {
    wrap = <ul class="dropdown">|</ul>
    NO.wrapItemAndSub = <li>|</li>
    ACT < .NO
    ACT = 1
    CUR < .NO
    CUR = 1
    CUR {
    } 
  }
}
jenses ·

Ich würde RootLevelSwitch in den CONSTANTS definieren, mit den entsprechenden Conditions.
Dann müßte das SETUP ungefähr so lauten:

key.value = {$RootLevelSwitch}
key.insertData = 1
datomtom ·

Danke schon mal @jenses, habe die Definition in den Konstanten vorgenommen und das klappt auch, wenn ich die Conditions im TypoScript-Objekt-Browser durchspiele: key.value bekommt den richtigen Wert.

Leider klappt das aber immer noch nicht mit der CASE-Anweisung. #angry# Aus irgendeinem Grund erhalte ich IMMER nur den default-Wert, aber es werden NIE die anderen Cases aufgerufen. Nochmal eingedampft, wo mein Problem liegt:

NO.wrapItemAndSub.stdWrap.override.cObject = CASE
NO.wrapItemAndSub.stdWrap.override.cObject {
  key.value = {$RootLevelSwitch}
  key.insertData = 1
  2 = TEXT
  2.value = <li class="item2">|</li>
  3 = TEXT
  3.value = <li class="item3">|</li>
  default = TEXT
  default = <li class="home">|</li>
}
SomehowLost ·

Hallo,

steht denn Dein "RootLevelSwitch.value" in den Constants (inkl. der Conditions freilich)?
Des Weiteren müsste es meiner Ansicht nach heißen

key.value = {$RootLevelSwitch.value}

Viele Grüße