Hallo Forum,
ich möchte ein Menü mit jquery und co. erstellen und dafür die aus dem Menü eine Variable für Javascript machen. Der Aufbau soll wie folgt aussehen:
var menu = [{url:'http://...', label:'Bla'},
{url:'http://...', label:'Blabla', children:[{url:'http://...', label:'Untermenue'},...]}...]
Das Typoscript sieht derzeit so aus:
# Template für MainMenü
temp.menu_1 = HMENU
temp.menu_1 {
# geht um das ganze Menü
wrap = var JsTopMenu=[|]
1 = TMENU
1 {
expAll = 1
NO {
doNotLinkIt = 1
stdWrap.cObject = COA
stdWrap.cObject {
10 = TEXT
10 {
# Klammer auf und URL
wrap = {url:'{getIndpEnv:TYPO3_SITE_URL}|'
insertData = 1
typolink {
parameter.field = uid
returnLast = url
}
}
20 = TEXT
20 {
field = subtitle//title
# Titel
wrap = ,label:'|'
}
}
}
ACT <.NO
}
2 < .1
2.wrap = ,children:[|]}
}
Nur irgendwie gelingt mir die Klammer- und Kommasetzung nicht, wie es gefordert ist. Entweder übersehe ich einen Punkt, wo ich noch wrappen sollte oder es geht nicht und ich muss mich mit PHP rumschlagen. Hat jemand eine Idee, wie ich das Problem gelöst bekomme?
Vielen Dank schon mal für die Hilfe und einen schönen Sonntag Abend noch!
Gruß
Jens
So, hab selbst noch ein wenig rumgespielt und bin auch schon ein ganzes Stück weiter. Nun sieht mein Typoscript wie folgt aus:
temp.menu_1 = HMENU
temp.menu_1.wrap = var JsTopMenu=[|]
temp.menu_1.1 = TMENU
temp.menu_1.1.expAll = 1
temp.menu_1.1.NO.doNotLinkIt = 1
temp.menu_1.1.NO.stdWrap.cObject = COA
temp.menu_1.1.NO.stdWrap.cObject.10 = TEXT
temp.menu_1.1.NO.stdWrap.cObject.10.wrap = {url:'{getIndpEnv:TYPO3_SITE_URL}|'
temp.menu_1.1.NO.stdWrap.cObject.10.insertData = 1
temp.menu_1.1.NO.stdWrap.cObject.10.typolink.parameter.field = uid
temp.menu_1.1.NO.stdWrap.cObject.10.typolink.returnLast = url
temp.menu_1.1.NO.stdWrap.cObject.20 = TEXT
temp.menu_1.1.NO.stdWrap.cObject.20.field = subtitle//title
temp.menu_1.1.NO.stdWrap.cObject.20.wrap = |*| ,label:'|'}, |*| ,label:'|'}, || ,label:'|'}
temp.menu_1.1.IFSUB = 1
temp.menu_1.1.IFSUB < temp.menu_1.1.NO
temp.menu_1.1.IFSUB.stdWrap.cObject.20.wrap = ,label:'|',
temp.menu_1.1.ACT < temp.menu_1.1.NO
temp.menu_1.2 < temp.menu_1.1
temp.menu_1.2.wrap = children:[|]},
Habe allerdings noch 2 Probleme.
1.
temp.menu_1.2.wrap = children:[|]},
erzeugt beim letzten Eintrag ein Komma zu viel. Habe folgendes ausprobiert, funktioniert aber leider nicht wie gewünscht:
temp.menu_1.2.wrap = |*| children:[|]}, |*| children:[|]}, || children:[|]}
Und 2.
Wie kann ich die geschweiften Klammern maskieren. Nun werden die Entities korrekt in HTML angezeigt, ich brauche sie aber in Reinform für Javascript. \{ und so funktionieren leider nicht... Wie kann ich die Zeichen in Typoscript maskieren?
Vielen Dank für die Hilfe
Jens
Geschweifte Klammer auf: &_#123;
Geschweifte Klammer zu: &_#125;
(Beides ohne den Unterstrich)
Danke für die Antwort. So hab ich das nun auch gemacht. Seh nur gerade, dass &#_123; bzw. &#_125; logischerweise auch als { bzw } angezeigt werden. Ich möchte nun aber, dass im Quelltext die Klammer also {} statt &#_123; oder &#_125; angezeigt wird. Wie ist das zu bewerkstelligen?
Gruß
Jens