Parameter ans Menü

Neulich sollte in einem Menü an jeden Eintrag der selbe Parameter angehängt werden. Ist das ein feststehender String, dann ist das relativ einfach:

mainmenu.10 = HMENU
mainmenu.10 {
  entryLevel = 0
  wrap = <ul>|</ul>
  1.noBlur = 1
  1 = TMENU
  1.addParams = &agnUID={GPvar:agnUID}
  1.NO = 1
  1.NO {
    ...
  }
}

Wichtig ist hier die Zeile „1.addParams = …“ doch leider lässt sich so nur ein String als Parameter anhängen.

Doch was, wenn – wie in diesem Fall – kein String sondern zum Beispiel ein Get-Parameter dynamisch ausgelesen werden soll und dann als Parameter angehängt werden soll?

Dazu muss das Menü quasi von Hand zusammenbauen. Eigentlich war die nun folgende Methode dazu gedacht externe Links und Shortcuts im Menü unterzubringen, doch sie funktioniert auch für diesen Zweck:

mainmenu.10 = HMENU
mainmenu.10 {
  entryLevel = 0
  wrap = 
  <ul>|</ul>
  1.noBlur = 1
  1 = TMENU
  1.NO = 1
  1.NO {
    doNotLinkIt = 1
    wrapItemAndSub=	<li>|</li>
    stdWrap.cObject = CASE
    stdWrap.cObject {
      key.field = doktype
      default = TEXT
      default {
        typolink.parameter.field = uid
        field = subtitle
        ifEmpty.field = title
        stdWrap.htmlSpecialChars = 1
        typolink.title.field = title // subtitle
        typolink.additionalParams.cObject = TEXT
        typolink.additionalParams.cObject.data = GPvar:agnUID
        typolink.additionalParams.cObject.wrap = &agnUID=|
      }
    }
  }
}

Hier kann man nun über typolink.additionalParams alles an die Menüeinträge dranhängen was das Herz begehrt, da bei additionalParams der stdWrap und das cObject zur Verfügung stehen.

P.S.: Verwendet man RealURL lassen sich diese zusätzlichen Parameter auch noch im Pfad unterbringen…

Veröffentlicht unter TYPO3 Technik
5 Kommentare auf “Parameter ans Menü
  1. tobi sagt:

    Hi tobi,
    vielen Dank für den Tip, hab ich natürlich sofort ausprobiert.
    Aber bei mir funktioniert das so leider nicht.

    Mein Menü würd dann so ausschaun, aber der Get-Parmeter wird leider nirgends mit angehängt:

    mainmenu = COA_INT
    mainmenu.10 = HMENU
    mainmenu.10 {
    entryLevel = 0
    wrap = <ul>|</ul>
    stdWrap.insertData=1
    1 = TMENU
    1.addParams = &agnUID={ GPvar:agnUID }
    1.noBlur = 1
    1.NO = 1
    1.NO {
    ATagTitle.field = abstract // description // title
    wrapItemAndSub = <li>|</li>
    }
    1.CUR < .1.NO
    1.CUR.wrapItemAndSub = <li class=”active”>|</li>

    1.ACT < .1.CUR
    }

    Siehst Du da irgendwo nen Fehler? Oder warums nicht funktioniert? Deine Lösung wär natürlich schöner, weil kürzer… 😉

    Viele Grüße

    Marco

  2. Marco sagt:

    Hi tobi,
    vielen Dank für den Tip, hab ich natürlich sofort ausprobiert.
    Aber bei mir funktioniert das so leider nicht.

    Mein Menü würd dann so ausschaun, aber der Get-Parmeter wird leider nirgends mit angehängt:

    mainmenu = COA_INT
    mainmenu.10 = HMENU
    mainmenu.10 {
    entryLevel = 0
    wrap = <ul>|</ul>
    stdWrap.insertData=1
    1 = TMENU
    1.addParams = &agnUID={ GPvar:agnUID }
    1.noBlur = 1
    1.NO = 1
    1.NO {
    ATagTitle.field = abstract // description // title
    wrapItemAndSub = <li>|</li>
    }
    1.CUR < .1.NO
    1.CUR.wrapItemAndSub = <li class=”active”>|</li>

    1.ACT < .1.CUR
    }

    Siehst Du da irgendwo nen Fehler? Oder warums nicht funktioniert? Deine Lösung wär natürlich schöner, weil kürzer… 😉

    Viele Grüße

    Marco

  3. tobi sagt:

    Hallo Marco,

    Ich habe das ganze auf typo3 4.0.5 (und älteren versionen) getestet, da hat das funktioniert.
    komischerweise geht das bei aktuellen typo3 varianten nicht mehr so, aber da kann man es minimal anders lösen ( funkt aber dann nicht mehr auf alten versionen 🙁 )
    mainmenu = COA_INT
    mainmenu.10 = HMENU
    mainmenu.10 {
    entryLevel = 0
    wrap = |
    1 = TMENU

    1.noBlur = 1
    1.NO = 1
    1.NO {
    ATagTitle.field = abstract // description // title
    wrapItemAndSub = |
    additionalParams = &agnUID={ GPvar:agnUID }
    additionalParams.insertData=1
    }
    1.CUR |
    1.ACT

  4. thefox sagt:

    klappt bestens. alternativ kann man dies auch nur für eine bestimmte seite machen (anstelle doktype)

    stdWrap.cObject = CASE
    stdWrap.cObject {
    key.field = uid
    default = TEXT
    default {
    field = nav_title // title
    stdWrap.htmlSpecialChars = 1
    typolink {
    parameter.field = uid
    title.field = subtitle // title
    }
    }
    # Erweiterte Suche
    40 < .default
    40 {
    typolink.additionalParams = &tx_indexedsearch[ext]=1
    }
    }

  5. alkativo sagt:

    Hi,

    wie mache ich denn weitere Parameter an eine externe URL?

    Das hier geht bei internen Links.

    NO = 1
    NO {
    #automatische Verlinkung des Menüs ausschalten
    doNotLinkIt = 1
    wrapItemAndSub=|
    stdWrap.cObject = CASE
    stdWrap.cObject {
    key.field = doktype
    default = TEXT
    default {
    typolink.parameter.field = uid
    field = title
    stdWrap.htmlSpecialChars = 1
    typolink.additionalParams = &source={GPvar : source}
    typolink.additionalParams.insertData=1
    }
    #3 = external url
    3 = TEXT
    3 {
    field = title
    typolink.parameter.field = url
    typolink.additionalParams = &source={GPvar : source}
    typolink.additionalParams.insertData=1
    typolink.extTarget.field = target
    }

    }
    }
    ACT < .NO
    ACT {
    wrapItemAndSub= |
    additionalParams = &source= {GPvar : source}
    additionalParams.insertData=1
    }

1 Pings/Trackbacks für "Parameter ans Menü"

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*