da bei typo scheinbar die CSS Einträge für "active" nicht funktionieren, würde ich gern der aktuellen Seite im typolink einen class-Eintrag mitgeben. Ich verwende für mein Menü kein HMenu sondern statische Marker.
So sieht es aus, wie ich es mir vorstelle. Es funktioniert aber noch nciht:
(Beispiel für die Startseite. Die anderen Einträge erben das Verhalten von dieser)
START = COA
START {
10 = TEXT
10.typolink.parameter = 1
10.if {
value.field = field:uid
equals = 1
}
20 < START.10
20.if.negate = 1
}
Bitte im Berichtigung!
Na dann gib per ATagParams eine class mit.
Das hilt dir:
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Typolink.html
Das ein Nichtfunktionieren der Pseudoclass active etwas mit TYPO3 zu tun haben soll wage ich zu bezweifeln. CSS ist CSS und hat mit TYPO3 nix zu tun.
Warum das Menü statisch ist bleibt hier natürlich auch ein Rätsel.
btw. Willkommen im Forum ;-)
danke für deine Antwort SLAng,
ich freue mich auch, ein Forum gefunden zu haben, wo noch aktiv was passiert. 🙂
START = COA
START {
10 = TEXT
10.typolink.parameter = 1 - current
10.if {
value.field = field:uid
equals = 1
}
20 < START.10
20.typolink.parameter = 1
20.if.negate = 1
}
Entschuldige, ich habe meine Frage nicht korrekt formuliert. Es geht mir nicht darum, eine Class-Eigenschaft in einen Typolink zu kriegen, sondern darum, wie ich diese Class-Eigenschaft so gestalte, dass sie optional gesetzt wird, wenn man gerade auf dieser Seite ist.
ich denke, mein if ist falsch formuliert, aber ich habe keine Ahnung, wie ich es richtig mache.
(editierfunktion des Forums geht nicht. da werd ich immer zur Startseite geschickt und das Post wird nicht geupdated. muss das so? 🙁 )
*edit*
gerade nochmal was ausprobiert, was ich in einem anderen Thread gelesen habe:
START = COA
START {
10 = TEXT
[globalVar = TSFE:id = 1]
10.typolink.parameter = 1 - current
[else]
10.typolink.parameter = 1 - other
[global]
}
Erstmal kommt da immer die class other. Also als if funktioniert das (noch!) nicht. Aber jetzt werden die nachfolgenden Marker nicht mehr gesetzt. Wie gehts richtig?
Welcher der beiden Wege ist typischer/angenehmer (der eine weg mit .if der andere mit [Bedingung]en)?
conditions dürfen nicht innerhalb von Verschachtelungen sein!
Ausserdem kann man sowas wie 1-current nicht als Parameter angeben - erwartet wird ein Integer für die Seite
danke. Wie sollte es denn dann gestaltet sein? Wenn ich wüsste, wie es anders geht, würde ich ja nicht fragen.
typolink Doku:
Consider this .parameter value passed to this function:
51 _blank blueLink
This would result in a link approx like this:
<A href=”?id=51” target=”_blank” class=”blueLink”>
- bedeutet "setze kein @target-Attribut"
Also würde
.parameter = 51 - blueLInk
zu folgendem führen:
<a href="?id=51" class="blueLink">
habe jetzt mal probiert, das Menü auch mit der HMENU Funktion zu gestalten.
GLOBALNAV = HMENU
GLOBALNAV {
1 = TMENU
1.wrap = <ul id="globalnav" class="boo"> | </ul>
1.NO = 1
1.NO {
wrapItemAndSub = <li id="current">|</li>
#stdWrap.htmlSpecialChars = 1
#ATagTitle.field = title
value = hallo
}
1.ACT = 1
1.ACT {
wrapItemAndSub = <li id="other"> | </li>
}
}
GLOBALNAV = HTML
GLOBALNAV.value (
<ul id="globalnav">
<li id="gn-vboo" >###START###</li>
<li id="gn-discover" >###DISCOVER###</li>
<li id="gn-enjoy" >###ENJOY###</li>
<li id="gn-share" >###SHARE###</li>
</ul>
)
Das untere Menü macht er problemlos. Dann ersetze ich die Marker und alles geht (bis eben auf das Darstellen der aktuellen Seite). Bei der oberen Variante kriege ich aber gar keine Ausgabe. (und ich habe inzwischen fast 10 Seiten im Menü)
ich versteh nicht warum Du das Menü mit einzelnen Markern machst.
Wenn Du eine Metanavigation machst, so gibt es extra den Menütyp LIST!
10 = HMENU
10.special = list
10.value = 1,5,78,94
ich mach es, weil das mit dem HMENU nicht erstellt wird. Ich weiss leider auch nicht warum. Hab den Code ja von euren Howtos. Aber immer wenn ich das so mache, bleibt der entsprechende Bereich, wo das Menü hin soll, leer.
Ich denke du verstehst da was falsch.
So wie es sich anhört willst du doch bestimmte Menüpunkte in deiner Navigation ausgeben.
Den Code den due Oben gepostet hast gibt dir alle Menüpunkte der ersten Ebene aus. Wenn dir da nichts angezeigt wird, dann musst du dir die Ebene per entryLevel holen.
Desweiteren sind kleine Fehler drinn:
Wenn du NO aktivierst, dann brauchst du ACT nicht nochmal aktivieren. In deinem Fall allerdings schon, denn du hast vergessen NO auf ACT zu kopieren. Das heißt in deinem ACT-Zustand wird dir nur der Wrap ausgegeben, das value schon mal gar nicht. Das Value ist zwar sowieso total über, aber ich gehe dochmal davon aus dass du die Navi auch noch erweitern wirst. Steht ja auch schon ATagTitle drinn (auskommentiert). Das würde dir dann in den ACT-Zustand auch nicht übernommen.
Also versuchs doch mal so:
GLOBALNAV = HMENU
GLOBALNAV {
special = list
special.value =
1 = TMENU
1.wrap = <ul id="globalnav" class="boo">|</ul>
1.NO = 1
1.NO {
wrapItemAndSub = <li id="current">|</li>
#stdWrap.htmlSpecialChars = 1
#ATagTitle.field = title
}
1.ACT < .1.NO
1.ACT {
wrapItemAndSub = <li id="other">|</li>
}
}
Wenn ich dich falsch verstanden habe, und du zum Beispiel alle Seiten einer Ebene ausgeben möchtest, dann musst du es mit entryLevel machen.
danke, ich denke, jetzt habe ich es fast.
#der Hauptnavigationsbaum
GLOBALNAV = HMENU
GLOBALNAV {
special = list
special.value =
entryLevel = 2
1 = TMENU
1.wrap = <ul id="globalnav" class="boo"> | </ul>
1.NO = 1
1.NO {
wrapItemAndSub = <li class="other">|</li>
#stdWrap.htmlSpecialChars = 1
ATagTitle.field = title
}
1.ACT < .1.NO
1.ACT {
wrapItemAndSub = <li id="current"> | </li>
}
}
so sieht das jetzt aus. Da stellt er aber komischerweise immer nur die aktuelle Seite dar und alle anderen ignoriert er. Das sorgt sogar mal dafür, dass garkein Menü da ist.
falsch!
special.value = x,y,z
Da musst Du die IDs der Seiten eintragen, die Du anzeigen willst.
entryLevel ist für den Einsatz ohne special gedacht und ist hier überflüssig / falsch
Bitte genauer lesen, ausserdem die Dokumentation lesen
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/ContentObjects/Hmenu/Index.html
du hast Recht. So ist es noch nicht richtig, aber mache ich es andersrum gibt es auch einen Fehler. Denn dann ist die Startseite (diese ist ein Layer über den anderen 3 darzustellenden Seiten) auch immer "current".
hier der aktuelle Code:
GLOBALNAV = HMENU
GLOBALNAV {
special = list
special.value = 1,3,4,5
#entryLevel = 2
1 = TMENU
1.wrap = <ul id="globalnav" class="boo"> | </ul>
1.NO = 1
1.NO {
wrapItemAndSub = <li class="other">|</li>
#stdWrap.htmlSpecialChars = 1
ATagTitle.field = title
}
1.ACT < .1.NO
1.ACT {
wrapItemAndSub = <li id="current"> | </li>
}
}
Dann nimm nicht ACT sondern CUR
es geht jetzt soweit erstmal ganz gut. Aber einige Punkte sind mir noch recht unklar.
1)
Wenn ich das einfachste Menü überhaupt erstelle (nach Doku für NO) kriege ich garkein Menü.
page.20 = HMENU
page.20.1 = TMENU
page.20.1.NO = 1
Meine Seiten sind so aufgebaut:
-domain(keine Seite)
|
|-Startseite
||-Hauptseiten (unsichtbar)
|||-SeiteA
|||-SeiteB
|||-SeiteC
||-Funktionsseiten (unsichtbar)
| |-Userseiten (unsichtbar)
| |-register
| |-edit
|-Storages
|-Userdata
|-Templates
und ich möchte in meinem Menü SeiteA,...B und ...C sehen.
aber das oben gezeigte Typoscript schreibt mir garkeine Seiten ins Menü. Das folgende aber auch nicht:
GLOBALNAV = HMENU
GLOBALNAV.entryLevel = 1
GLOBALNAV.1 = TMENU
GLOBALNAV.1.NO = 1
auch mit 2 und 3 für entryLevel funktioniert es nicht. Nur mit der Variante, die 2 Posts über diesem zu sehen ist.
2)
beim TMENU wird das komplette Menü gewrapt. Wie kann ich denn sagen, dass ich einen Menüpukt wrappen möchte? In dem NO wird ja direkt automatisch ein <a>-Tag erstellt. Aber ich kann keinen großen, dynamischen(!!!) einfluss auf das außen rum ums <a>-Tag nehmen. Nur statische Sachen rum machen... 🙁