Zum Inhalt springen

Menupunkte in Abhängigkeit vom Seitenlayout ausgeben

Erstellt am 8. Juli 2010 · 3 Antworten · letzte Antwort am 9. Juli 2010

Tags: Frage

ra.​s ·

Hallo Zusammen,

ich suche eine Möglichkeit Menupunkte eines normalen TMENUS abhängig von einem, im Flexform der entspechenden Seite verankerten Wertes, auszugeben. - Sprich: Ich will eine farbiges Menu erstellen dessen Menupunkte die Farbe der entsprechenden Seite bekommen sollen.

Mein TS dazu funktioniert auch soweit, bis auf die Tatsache das die Menupunkte ALLE in der Farbe der aktuellen Seite dargestellt werden.

Mein Problem ist die Zeile uid = ??? in der ich gerne die uid des Menupunktes übergeben möchte aber bisher nur an die uid der aktuellen Seite komme.

20 = HMENU
20 {
  entryLevel = 1
  1 = TMENU
  1 {
    expAll = 0
    noBlur = 1
    wrap = <ul>|</ul>
    NO = 1
    NO.wrapItemAndSub.cObject = CASE
    NO.wrapItemAndSub.cObject {
      key.cObject = USER
      key.cObject {
        userFunc = tx_flexformgetfield_pi1->main
        field = dw_bgcolor
        uid = ???
      }
      default        = TEXT
      default.value  = <li class="blue">|</li>
      bgGreen        = TEXT
      bgGreen.value  = <li class="green">|</li>
      bgPurple       = TEXT
      bgPurple.value = <li class="purple">|</li>
      bgYellow       = TEXT
      bgYellow.value = <li class="yellow">|</li>
      bgOrange       = TEXT
      bgOrange.value = <li class="orange">|</li>
      bgRed          = TEXT
      bgRed.value    = <li class="red">|</li>
      bgBrown        = TEXT
      bgBrown.value  = <li class="brown">|</li>
    }
  }
}

Weiss jemand Rat?

Grüße
Ralf

ra.​s ·

... also eigentlich möchte ich nur die uid des Menuelements an die Userfunc übergeben. - Das muss doch gehen.

... kann ich die uid vielleicht auch im Script der Userfunc irgendwo aus dem TSFE ziehen??

rrudorfer ·

Die UID des Menüelements kriegst du normalerweise über

NO.wrapItemAndSub = <li class="uid{field:uid}"> | </li>
NO.wrapItemAndSub.insertData = 1

Vielleicht geht folgender Ansatz:

NO.wrapItemAndSub.cObject = CASE
NO.wrapItemAndSub.cObject {
  key.stdWrap.dataWrap = {field:uid}
  key.postUserFunc ....
}

Somit kannst du den Wert den du mal auf key schreibst noch ändern... #paralyzed# Vielleicht zumindest... 😉

Oder zumindest der Ansatz hilft...

Ciao,
Roman

ra.​s ·

Danke für Deine Antwort,

habe mich aber für einen anderen Ansatz entschieden:
Im Script tx_flexformgetfield_pi1.php der flexform_getfield Erweiterung die Zeile

if(isset($this->conf["uid"])) $lookup_uid = $this->conf["uid"]; else $lookup_uid = $GLOBALS['TSFE']->id;

durch :

if(isset($this->conf["uid"])) {
  if($this->conf["uid"] != 'current') $lookup_uid = $this->conf["uid"]; 
  else $lookup_uid = substr(strstr($this->cObj->currentRecord,':'),1);
} else $lookup_uid = $GLOBALS['TSFE']->id;

ersetzen.
Danach kann man im TS uid = current angeben und nicht die uid der gerade aktuelle page, sondern die des aktuellen records wird verwendet.