Zum Inhalt springen

Menu mit if-Abfrage

Erstellt am 14. Dezember 2009 · 2 Antworten · letzte Antwort am 15. Dezember 2009

Tags: Frage

bats ·

Hallo,
Ich möchte in einem Menü bei Übereinstimmung der SeitenID mit einer von mir vorher gesetzten Get-Variable ({elementUid}=GP:myvar) den linkwrap überschreiben.

Ich dachte, das würde mit einer if-Anweisung am besten gehen, komme jedoch nicht weiter. Die einzelnen Menülinks verweisen absichtlich immer auf die feste ID 33. Deshalb kann ich auch ACT hier leider nicht nutzen.

Hintergrund ist, dass man auf dieser Seite (33) Elemente weiter editieren kann, die je auch eine eigene Seite im Baum - nur halt mit einem völlig anderem TV.

lib.menu{
   special = directory
   special.value = 11
   entrylevel = 1
   wrap (
    <form name="quickmenu" action="">
    <select style="" name="pfad" size="1" onchange="window.location='index.php?id=33&myval='+document.quickmenu.pfad.options[document.quickmenu.pfad.selectedIndex].value">
<option value="11"> Anderes Element aussuchen </option>|
</select></form>
)
1 = TMENU
1 {
   expAll = 1
   NO {
      stdWrap.data = field:title
      allWrap = |
      subst_elementUid = 1
      doNotLinkIt = 1
      linkWrap = <option value="{elementUid}">|</option>
      if{
      value={elementUid}
      equals=GP:myvar
      linkWrap = <option selected="selected" value="{elementUid}">|</option>
      }
   }
...
Julian.​Hofmann ·

Hallo.

Ein Problem dürfte die Zeile 21 aus Deinem TS sein. Nicht überall werden die Werte mit geschweiften Klammern ersetzt. So vermutlich auch hier nicht. Ein value.data = field:uid dürfte Dich weiterbringen.

Ein weiteres Problem dürfte das if direkt im TMENUITEM/NO-Objekt sein. Das Objekt selbst hat keine stdWrap-Eigenschaft, d.h. hier greift kein if.

Viele Grüße
Julian

bats ·

Hallo Julian,
danke für die Antwort. Das hatte ich bereits befürchtet und ebenso bedauert.

Ich habe das Problem heute anders gelöst. Auf der Seite, wo dieses Auswahlmenü verwendet wird, setzte ich das gewünschte option-Tag mit JavaScript nachträglich auf aktiv. Das klappt wunderbar, auch wenn mir eine Typoscript-Lösung eigentlich lieber gewesen wäre.

<script type="text/javascript">Event.observe(window,"load",function(){var sel=document.quickmenu.pfad;if(sel!=null)sel.value="myvar";})</script>

"myvar" muss natürlich beim Aufruf der Seite mit dem Wert der Get-Variablen gefüllt werden. Die prinzipielle Funktion des Menüs - Aufruf der selben Seite mit Page-Ids als Get-Parametern - bleibt auch bei abgeschaltetem JS erhalten.