[Frage] HMENU bzw TMENU richtig verschachteln TYPO3-Version: 9.5.19

  • L30x6E L30x6E
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    01. 07. 2020, 11:34

    Hallo miteinander,
    ich habe folgenden Code:

    [code]lib.mainmenu = HMENU
    lib.mainmenu{
    1 = TMENU
    wrap = <ul>|</ul>
    1 {
    expAll = 1
    NO = 1
    NO{
    wrapItemAndSub = <li>|</li>
    stdWrap.htmlSpecialChars = 1
    }
    IFSUB < .NO
    IFSUB {
    wrapItemAndSub = <li><span class="dropdown-arrow"></span>|</li>
    ATagParams = class="dropdown-link"
    }
    }

    2 = TMENU
    2 {
    expAll = 1
    wrap = <ul class="opener"><li><p class="display-3">Produkte</p></li>|</ul>
    NO = 1
    NO{
    wrapItemAndSub = <li>|</li>
    stdWrap.htmlSpecialChars = 1
    }
    IFSUB < .NO
    IFSUB {
    wrapItemAndSub = <li><span class="dropdown-arrow"></span>|</li>
    ATagParams = class="dropdown-link"
    }
    }

    [/code]

    Im TMENU level 2 ist unter wrap <li><p class="display-3">Produkte</p></li> welches mir ein Listen Item einfügt. Das ist zwar an dieser stelle soweit richtig, leider steht jetzt bei jedem level 2 Menü Produkte an erster stelle. Dort sollte allerdings der passende Wert aus dem Level 1 Menü stehen auf den geklickt wurde. Gibt es eine Möglichkeit anstatt Produkte hart gecodet dort hin zu schreiben eine Variable(Array) welche die passenden Einträge enthält. Oder gibt es evtl. sogar eine ganz andere Herangehensweise dieses Problem zu lösen?

    Mit freundlichen Grüßen
    Benjamin Leonhardt


  • 1
  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    3083 Beiträge
    132 Hilfreiche Beiträge
    02. 07. 2020, 11:33

    Innerhalb Deiner Menü-Einträge hast Du auch Zugriff auf die pid, dh. die UID Deiner Elternseite. Damit könnte/sollte etwas in Kombination mit einem cObject zu basteln sein.

    Evtl. auch hilfreich dabei: https://blog.marit.ag/2009/12/15/datenbankfelder-stdwrap-data/

  • L30x6E L30x6E
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    03. 07. 2020, 17:36

    Danke für deine Antwort. Ich versteh worauf du hinaus willst.
    Leider sind das zu wenig Informationen für mich damit ich mir daraus was Basteln kann...
    Gibts da nicht irgwo detailliertere Informationen wie das funktioniert?
    Ich hab zwar schon gegoogelt aber leider ohne erfolg...
    Die Typo3 Community ist leider sehr sparsam was Informationen/Anleitungen/Tutorials betrifft...

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    3083 Beiträge
    132 Hilfreiche Beiträge
    06. 07. 2020, 09:10

    "Die Typo3 Community ist leider sehr sparsam was Informationen/Anleitungen/Tutorials betrifft..."

    Was? Finde ich eigentlich nicht. Und es gibt viele Kanäle, über die man idR auch schnelle und gute Informationen bekommt - vorausgesetzt, man ist auch wirklich am Wissen interessiert.

    Aber zurück zu Deinem Problem. Da kann ich mehr Infos liefern (fange meist aber erstmal nur mit Denkanstößen an, die oft schon helfen).

    Menüs (konkret TMENU) haben die stdWrap-Eigenschaft (https://docs.typo3.org/m/typo3/reference-typoscript/10.4/en-us/MenuObjects/Tmenu/Index.html). Damit kannst Du z.B. via preCObject ein Objekt vor den eigentlichen Inhalt des TMENU setzten - also z.B. eben einen zusätzlichen Menüpunkt einfügen.

    [code]2 {
    stdWrap.preCObject = TEXT
    stdWrap.preCObject.typolink.parameter.field = pid
    }[/code]

  • L30x6E L30x6E
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    06. 07. 2020, 10:40

    Wow das ist genau dass was ich suche :-) leider erstellt mir Typo3 daraus einen Link, klar ist ja auch Typolink. wenn ich Typolink allerdings weg lasse, gibt er mir nur noch die PID (also eine zahl) aus.
    Gibt es denn ne Möglichkeit dort den Seitentitel statt der PID aus zu geben?

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    3083 Beiträge
    132 Hilfreiche Beiträge
    06. 07. 2020, 14:15

    Da kommt dann der Link zur marit AG ins Spiel (siehe oben).
    Was Du als preCObject konfigurierst bzw. dort als TEXT ausgeben lässt, da bist Du frei.

  • L30x6E L30x6E
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    07. 07. 2020, 10:49

    also mit dem marit AG link komm ich gar nicht klar. hier funktioniert leider nichts...
    ich hab nun auch schon das ganze internet durchforstet... leider ohne erfolg...

  • L30x6E L30x6E
    T3PO
    0 x
    12 Beiträge
    0 Hilfreiche Beiträge
    07. 07. 2020, 11:02

    achso ich habs auch schon mit doNotLinkIt versucht leider auch ohne erfolg...
    hier mal der aktuelle stand welcher die PID's ausgibt.

    lib.mainmenu{
    1 = TMENU
    wrap = <ul>|</ul>
    1 {
    expAll = 1
    NO = 1
    NO{
    wrapItemAndSub = <li>|</li>
    stdWrap.htmlSpecialChars = 1
    }
    IFSUB < .NO
    IFSUB {
    wrapItemAndSub = <li><span class="dropdown-arrow"></span>|</li>
    ATagParams = class="dropdown-link"
    }
    }

    2 = TMENU
    2 {
    expAll = 1
    stdWrap.preCObject = TEXT
    stdWrap.preCObject.field = pid
    stdWrap.preCObject.insertData=1
    #stdWrap.preCObject.typolink.parameter.field = pid
    #stdWrap.preCObject.doNotLinkIt = 1
    #stdWrap.preCObject.field = DB:tt_content:pid:title
    stdWrap.preCObject.wrap = <li><p class="display-3">|</p></li>
    wrap = <ul class="opener">|</ul>
    NO = 1
    NO{
    wrapItemAndSub = <li>|</li>
    stdWrap.htmlSpecialChars = 1
    }
    IFSUB < .NO
    IFSUB {
    wrapItemAndSub = <li><span class="dropdown-arrow"></span>|</li>
    ATagParams = class="dropdown-link"
    }
    }

    3 = TMENU
    3 {
    wrap = <ul class="opener">|</ul>
    NO = 1
    NO{
    wrapItemAndSub = <li>|</li>
    stdWrap.htmlSpecialChars = 1
    }
    }
    }

  • Julian.Hofmann Julian.Ho...
    Flash Gordon
    0 x
    3083 Beiträge
    132 Hilfreiche Beiträge
    07. 07. 2020, 16:24

    Probier's mal damit:
    [code]stdWrap.preCObject = TEXT
    stdWrap.preCObject {
    field = pid
    wrap = {DB:pages:|:title}
    insertData = 1
    }[/code]

  • 1