Ich baue ein Navigationsmenü mit TYPOscript, das mit Inhalten aus der Tabelle tt_content erweitert wird.Howto setzen einer CSS-Klasse in einem TYPOscript-Menü abhängig von Inhalt von tt_content
Jetzt versuche ich die CSS-Klasse des Elternelements (.drop-wrapp) zu ändern, wenn Inhalt von tt_content vorhanden ist und den Seitentitel von der übergeordneten Seite in zweiter Ebene (hier: "PAGE TITLE FIRST LEVEL ").
Das ist mein TypoScript so weit:
lib.navMain = COA
lib.navMain {
10 = TEXT
10.wrap = |
10.value = {$const.lang.navi.skip}
10.typolink {
parameter.data = page:uid
parameter.dataWrap = |#skipMainNavi
ATagParams = class="sr-only sr-only-focusable"
}
20 = HMENU
20 {
special = directory
special.value = {$const.pid.home}
entryLevel = 0
1 = TMENU
1 {
wrap = <ul class="nav navbar-nav" role="menubar">|</ul>
expAll = 1
target = _top
noBlur = 1
wrap= <ul class="nav navbar-nav" role="menubar">|</ul>
NO {
wrapItemAndSub = <li class="first">|</li> |*| <li>|</li> |*| <li class="last">|</li>
linkWrap = |
ATagParams = role="menuitem"
title = field:title
ATagTitle.field = subtitle // title
}
ACT < .NO
ACT = 1
ACT {
wrapItemAndSub = <li class="first active">|</li> |*| <li class="active">|</li> |*| <li class="last active">|</li>
ATagParams = class="mainmenuActive"
# linkWrap = <strong>|</strong>
}
}
2 < .1
2 {
wrap = <div class="drop-wrapp CLASS_IF_CONTENT_FROM_TT_CONTEN"><div class="drop-wrapp-inner">|</div></div>
20 = HMENU
20 {
special = directory
special.value.data = field:pid
1 = TMENU
1 {
expAll = 1
NO {
wrapItemAndSub = <li class="first">|</li> |*| <li>|</li> |*| <li class="last">|</li>
linkWrap = |
ATagParams = role="menuitem"
title = field:title
ATagTitle.field = subtitle // title
}
ACT < .NO
ACT = 1
ACT {
wrapItemAndSub = <li class="first active">|</li> |*| <li class="active">|</li> |*| <li class="last active">|</li>
ATagParams = class="mainmenuActive"
# linkWrap = <strong>|</strong>
}
}
}
stdWrap.append = CONTENT
stdWrap.append {
table = tt_content
select {
pidInList.field = pid
where = colPos=1 AND deleted=0 AND hidden=0
orderBy = sorting
languageField = sys_language_uid
max = 2
}
stdWrap {
wrap = <div class="teaser-block"><div class="teaser-block-inner"><strong class="title">PAGE TITLE FIRST LEVEL</strong><div class="teaser-text">|</div></div></div>
// wrap only if there is content!
required = 1
}
}
stdWrap.innerWrap = <div class="drop-block"><ul class="list-unstyled nav-list" role="menubar">|</ul></div>
}
}
30 = TEXT
30.wrap = <a id="skipMainNavi" class="sr-only">|</a>
30.value =
30.htmlSpecialChars = 0
}
UPDATE:
Das ist sehr breafly was ich erreichen möchte:
<nav>
<ul>
<li><a href="#">Level 0.0</a></li>
<li>
<a href="#">Level 0.1</a>
<div class="drop-wrapp wide"><!-- only add class ".wide" if there is content from tt_content in "div.teaser-block" -->
<div class="drop-wrapp-inner">
<div class="drop-block">
<ul>
<li><a href="#">Level 1.0</a></li>
<li><a href="#">Level 1.1</a></li>
<li><a href="#">Level 1.2</a></li>
</ul>
</div>
<div class="teaser-block">
Here is content from tt_content
</div>
</div>
</div>
</li>
<li><a href="#">Level 0.2</a></li>
</ul>
</nav>
Könnten Sie bitte so freundlich sein, den Code zu straffen, um ein minimales Beispiel zu erhalten? Dies würde helfen, Ihre Frage zu beantworten. Zuerst würde ich versuchen, so genannte REGISTER cObjects –
Ich habe den HTML-Code in meiner Frage hinzugefügt. In der Zwischenzeit habe ich eine funktionierende Lösung für mich gefunden (siehe Antwort). Nicht sexy, aber funktionierend. Vielleicht kennst du einen besseren Weg? – chris