Hallo,
ich frage mich (bzw. den Leser dieser Frage 😉 ) ob es möglich ist, in einem Menüpunkt ein einzelnes Wort mit einem anderen Style als den Rest des Menüpunktes zu versehen.
Sollte z.B. folgendermassen aussehen:
--Obermenüpunkt
----bla blubb trallala
----blabla blubb
----holdrio blubb bla
Das Wort "blubb" sollte dabei in allen Untermenüpunkten mit dem selben Style, aber einem anderem als der Rest des Menüpunktes dargestellt werden.
Mir fallen dazu zwei prinzipielle Lösungsansätze ein:
- eine Funktion die alle Vorkommen eines bestimmten Wortes mit einem style wrappt.
- oder: im Redakteurbereich bei der Eingabe des Seitennamens/Navigationstitels das betreffende Wort irgendwie markieren und dann mittels TS wrappen.
Was auf jeden Fall funktioniert: Einfach im Seitenname einen <span> mit einem Style um das entsprechende Wort. Sauber ist das aber nicht.
Gibt es da irgendeine halbwegs saubere Möglichkeit? Hat jemand eine Idee? Noch interessanter: Hat jemand eine Idee, wie das nicht nur in einem TMENU, sondern auch in einem GMENU funktionieren könnte?
Bin für jede Hilfe dankbar!
Grüße,
Mööp.
dazu kannst du die funktion option split verwenden (https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/OptionSplit.html).
für dein beispiel könntest du es so umsetzen:
...
linkWrap = <span class="link_1">|</span> || <span class="link_2">|</span> || <span class="link_1">|</span> ...
...
moin,
das sollte mit := replaceString() klappen, aber erst seit Version4.
Armin
Hallo & vielen Dank für die beiden Antworten! Hat mir schon mal sehr weitergeholfen.
Habe mich mal durch beides etwas durchgewurschtelt.
Wenn ich die Dokumentation zu OptionSplit richtig verstanden habe, dann hilft mir das nur was, wenn das Wort "blubb" immer an der gleichen Stelle steht, also z.B. immer das zweite Wort im Menüpunkt ist. Habe ich das richtig verstanden? Das ist bei meiner Anforderung nämlich leider nicht der Fall: Da kann das Wort an beliebiger Stelle stehen. Das habe ich leider nicht exakt genug formuliert, sorry.
Deshalb habe ich es mal mit replaceString probiert (Habe Version 4.1 am Laufen). Unter http://www.sk-typo3.de/Typoscript-Reference.223.0.html?&cHash=23e5d022a3&tx_rlmpofficedocuments_pi1%5BshowPage%5D=3 gibt es eine Dokumentation zu replaceString.
Laut der dort angegebenen Syntax müsste es doch so:
# dritte Ebene
3 = TMENU
3.NO = 1
3.NO {
value:= replaceString blubb|<b>blubb</b>
ATagParams = class="umenu"
linkWrap = |<br/>
}
funktionieren, oder?
Tut es aber leider nicht. Ich finde keine Anzeichen dafür, dass der Replace ausgeführt wird. #paralyzed# Der Rest vom Menü scheint soweit zu funktionieren.
Jemand eine Idee?
Niemand eine Idee? Schade!
Oder habe ich mich unklar ausgedrückt? Zu wenig selbst recherchiert?
Grüße,
Mööp.
The function is specified right next to the operator (trimmed) and holding the value in brackets (not trimmed).
Sollte also so aussehen:
#dritte Ebene
3 = TMENU
3.NO = 1
3.NO {
value:=replaceString(blubb|<b>blubb</b>)
ATagParams = class="umenu"
linkWrap = |<br/>
}
Hallo und Danke für die Antwort,
habe länger rumprobiert und replaceString scheint nicht zu funktionieren. Ich denke das liegt daran, dass "NO" keine Eigenschaft mit dem Namen "value" hat, oder sehe ich das falsch?
Gibt es da einen workaround?
Komme da leider nicht weiter...
Sorry dass ich das nochmal aufwärme: Ich versuche wirklich das Problem selber zu lösen, komme aber nicht drauf.
Hat jemand eine Idee, ob die Vermutung, die ich in meinem vorherigen Post äußere:
habe länger rumprobiert und replaceString scheint nicht zu funktionieren. Ich denke das liegt daran, dass "NO" keine Eigenschaft mit dem Namen "value" hat, oder sehe ich das falsch?
die Ursache des Problems sein könnte? [/quote]
Oder noch besser: Eine Idee, wie ich das Problem lösen könnte? Oder eine inspiration?
Danke im voraus!
Versuchs mal so (ungetestet):
#dritte Ebene
3 = TMENU
3.NO = 1
3.NO {
stdWrap.cObject = TEXT
stdWrap.cObject.field = title
stdWrap.cObject.value:=replaceString(blubb|<b>blubb</b>).
ATagParams = class="umenu"
linkWrap = |<br/>
}
so in der Art sollte es klappen...
Grüße
Christian
Hallo Kitsunet & vielen, vielen Dank für die Antwort. Langsam komme ich auf den richtigen Weg.
Ich habe das eben ausprobiert, aber so scheint es nicht zu funktionieren.
Wenn ich den von dir geposteten Code ändere in
#dritte Ebene
3 = TMENU
3.NO = 1
3.NO {
stdWrap.cObject = TEXT
# stdWrap.cObject.field = title
stdWrap.cObject.value = blubb
stdWrap.cObject.value:=replaceString(blubb|<b>blubb</b>).
ATagParams = class="umenu"
linkWrap = |<br/>
}
dann funktioniert es. Macht natürlich keinen Sinn, weil der Menütitel nicht erhalten bleibt. #angry#
Fazit: replaceString funktioniert anscheinend nicht, wenn ich die Eigenschaft field verwende.
Leider weiss ich noch immer nicht, wie ich das lösen könnte...
Das kann doch jetzt nicht mehr wild sein, hast Du/jemand anderes noch einen Tipp für mich?
Grüße,
Mööp.
Ich hab den Eindruck, dass dir dann nur der Weg über ein PHP Script bleibt.
Tja... 😢
das hab ich leider nicht drauf, deswegen muss ich darauf wohl verzichten. Sehr schade.
Ich danke euch trotzdem für die Hilfe!
Grüße,
Mööp.
Mir ist inzwischen noch parseFunc eingefallen, vielleicht kannst du damit was basteln, da würde ich mich mal einlesen.
Grüße
Christian