Zum Inhalt springen

Menü mit elementUid bei <ul>

Erstellt am 8. Januar 2014 · 6 Antworten · letzte Antwort am 11. Januar 2014

Tags: TYPO3 4.x, Frage

DanStoe ·

Hallo zusammen!

Ich habe ein Menü zusammengestellt, dass hoffentlich auch für mobile Geräte funktioniert, wenn das letzte Problem gelöst ist.

Problem: an einer bestimmten Stelle, wird {elementUid} nicht aufgelöst. Warum weiß ich, allerdings weiß ich nicht, wie ich das Problem am untersten Ende des Menü-Typoscripts lösen kann. An all den anderen Stellen war das Problem durch Recherche im Internet lösbar.

Die besagte Zeile ist wrap = <ul class="nav mo{elementUid} collapse"> | </ul>. DAs gesamte Typoscript ist einfach direkt und dem Text angehängt.

ElementUid wird nur bei allwrap, Stdwarp, linkwrap durch die Nummer ersetzt, bei wrap nicht.
Dieses besagte <ul> leitet eine Unterliste eines Listenpunkts ein und soll natürlich von diesem Listenpunkt umschlossen sein.

Der übergeordnete Listenpunkt enthält data-target = ".mo{elementUid}" und soll dann das entsprechende <ul> mit dem gleichem mo{elementUid} anspringen.

Was muss ich tun damit
a) die elementUid im <ul> aufgelöst wird
b) das untergeordnete <ul> die gleiche Nummer aufweist wie der übergeordnete Listenpunkt ?

Menü-Typoscript:

#Hauptnavigation
lib.mainnav_mobile = HMENU
lib.mainnav_mobile {
entryLevel=0
1 = TMENU
1 {
noBlur = 1
expAll = 1
wrap = <div class="navbar"><nav id="navbar-mobile" class="nav-mainmobile-collapse collapse nav-collapse"> <div class="navbar-inner"><ul id="nav-mobile" class="nav nav-tabs nav-stacked">|</ul></div></nav></div>

NO = 1
NO {
subst_elementUid = 1
allWrap = <li class="m{elementUid}">|
wrapItemandSub = | </li>
stdWrap.htmlSpecialChars = 1
}

IFSUB < .NO
IFSUB {
allWrap = <li class="m{elementUid} sub"> |
linkWrap = <a data-toggle="collapse" data-target=".mo{elementUid}"> | </a>
stdWrap.wrap = | <b class="caret"></b>
doNotLinkIt = 1

}

CUR = 1
CUR < .NO
CUR {
allWrap = <li class="m{elementUid} current"> |

}

CURIFSUB = 1
CURIFSUB < .IFSUB
CURIFSUB {
allWrap = <li class="m{elementUid} current sub"> |

}

}

2 = TMENU
2 {
noBlur = 1
expAll = 0
sectionIndex = true
wrap = <ul class="nav mo{elementUid} collapse"> | </ul>



NO = 1
NO.allWrap = <li>|</li>

CUR = 1
CUR < .NO
CUR.allWrap = <li class="current">|</li>

}
}

Ich hoffe, es kann mir hier jemand helfen. Die erste Lösung eines Aufklappmenüs funktionierte zwar auf dem Desktop allerdings nicht auf den mobilen Geräten. Beim Debuggen auf dem mobilen Gerät, wurde ständig ein jquery-Fehler ausgeworfen.

Vielen Dank im voraus,
Daniela

Chrissli ·

Alternativ kannst du auch die cObject' der entsprechenden Wraps als COA neu aufbauen und die entsprechenden Teile mit einem passenden Wrap und data füttern, auch wenn das vielleicht etwas umständlich ist.

jenses ·

elementUid steht dir im TMENU-ITEM zur Verfügung, nicht aber im HMENU.
Nutzt du aber in der ersten Menüebene folgenden Code:

lib.mainnav_mobile.1.NO.wrapItemandSub = <li class="m{elementUid}">|</li>

und

lib.mainnav_mobile.1.IFSUB.linkWrap = <a data-toggle="collapse" data-target="li.m{elementUid} ul"> | </a>

solltest du das Gewünschte erreichen.

DanStoe ·

Hallo jensen,

vielen vielen Dank für diesen Tipp.

data-target="li.m{elementUid} ul" war der heiße Tipp.
Nun funktioniert es zumindest auf meinem Android-Handy.

Warum es aber immer noch nicht auf dem IPad (altes Ipad alte Generation) funktioniert, verstehe ich jetzt nicht. Jetzt heißt es weiter suchen. Wahrscheinlich liegt es an der Jquery-Version.

DanStoe ·

Das Menü funktioniert nun auf Android-Geräten. Ich hab es nun auch mit einem Android-Tablet getestet.

Leider funktioniert dies nicht mit Apple-Mobilgeräten. Was mir ehrlich gesagt schleierhaft ist.

Welche Möglichkeiten gibt es dies herauszufinden?

DanStoe ·

Ich habe nun folgenden Codeteil
IFSUB {
allWrap = <li class="m{elementUid} sub"> |
linkWrap = <a data-toggle="collapse" data-target=".mo{elementUid}"> | </a>
stdWrap.wrap = | <b class="caret"></b>
doNotLinkIt = 1

durch

IFSUB {
allWrap = <li class="m{elementUid} sub"> |
linkWrap = <div class="layer1"> | <a data-toggle="collapse" data-target="li.m{elementUid} ul"><b class="caret"></b></a> </div>
}
ersetzt. Jetzt funktioniert es, mit Touch auf das Toggler Symbol.