Hallo,
ich habe eine ganz simple Datenbank mit Orten, die ich als Navigationspunkte im Menue ausgeben will. Dazu benutze ich eine userFunc, die mir die Orte als Array zurückgibt. Soweit - denke ich - ok.
Das funktioniert soweit auch, nur der optionSplit will nicht so wie ich.
Ich will um ALLE Orte ein GEMEINSAMES <span> haben. Dazu nutze ich optionSplit in der Form:
<span class="das_will_ich">| |*| <!--mitte-->| |*| <!--ende-->|
Hier mal mein TypoScript:
page.includeLibs.menustuff = fileadmin/templates/scripts/menuFunc.php
lib.events = HMENU
lib.events {
special = userfunction
special.userFunc = user_menuFunc->makeMenuArray
special.userFunc.table = tx_events_city
special.userFunc.select.pidInList = 23
special.userFunc.actextkey = tx_events_pi1
special.userFunc.actextvar = city
1 = TMENU
1 {
expAll = 1
noBlur = 1
# das macht den schliessenden span
wrap = |</span>
NO = 1
NO.doNotLinkIt = 1
NO.stdWrap.field = city
NO.stdWrap.typolink.parameter = 10
NO.stdWrap.typolink.additionalParams.dataWrap = &tx_events_pi1[city]={field:uid}
NO.ATagTitle.field = abstract // description // subtitle
NO.allWrap = <span class="anfang">|<div class="abstand">#124;</div>|*|<span class="mitte">|<div class="abstand">#124;</div>|*|<span class="ende">|
ACT < .NO
ACT = 1
ACT.ATagParams = class="aktiv"
}
}
Als HTML wird für alle Orte jeweils ein class="mitte" ausgegeben. class="anfang" und class="ende" werden komplett vom optionSplit ignoriert, als gäbe es sie nicht.
Sieht jemand, was ich falsch gemacht habe? Danke schonmal!
Hallo,
kann es vielleicht an dem zurückgegebenen Array liegen, dass optionSplit jeden Ort als mittleren Part definiert und es kein first und last gibt?
NO.allWrap = <!-- anfang -->| |*| <!-- mitte -->| |*| <!-- ende -->|
Es wird im HTML immer nur <!-- mitte --> ausgegeben.
PS: Das gif vom mm_forum hat sich jetzt hier irgendwie dazuwischen geschlichen... Gehört natürlich nicht dazu.
array(8-) {
[0]=>
array(9) {
["uid"]=>
string(1) "1"
["pid"]=>
string(2) "27"
["tstamp"]=>
string(10) "1293404432"
["crdate"]=>
string(10) "1293404432"
["cruser_id"]=>
string(1) "1"
["sorting"]=>
string(3) "256"
["deleted"]=>
string(1) "0"
["hidden"]=>
string(1) "0"
["city"]=>
string(4) "Alle"
}
[1]=>
array(9) {
["uid"]=>
string(1) "2"
["pid"]=>
string(2) "27"
["tstamp"]=>
string(10) "1293404462"
["crdate"]=>
string(10) "1293404462"
["cruser_id"]=>
string(1) "1"
["sorting"]=>
string(3) "512"
["deleted"]=>
string(1) "0"
["hidden"]=>
string(1) "0"
["city"]=>
string(6) "Berlin"
}
[2]=>
array(9) {
["uid"]=>
string(1) "3"
["pid"]=>
string(2) "27"
["tstamp"]=>
string(10) "1293404499"
["crdate"]=>
string(10) "1293404499"
["cruser_id"]=>
string(1) "1"
["sorting"]=>
string(3) "768"
["deleted"]=>
string(1) "0"
["hidden"]=>
string(1) "0"
["city"]=>
string(8-) "Brüssel"
}
[3]=>
array(9) {
["uid"]=>
string(1) "4"
["pid"]=>
string(2) "27"
["tstamp"]=>
string(10) "1293404523"
["crdate"]=>
string(10) "1293404523"
["cruser_id"]=>
string(1) "1"
["sorting"]=>
string(4) "1024"
["deleted"]=>
string(1) "0"
["hidden"]=>
string(1) "0"
["city"]=>
string(11) "Düsseldorf"
}
[4]=>
array(9) {
["uid"]=>
string(1) "5"
["pid"]=>
string(2) "27"
["tstamp"]=>
string(10) "1293404541"
["crdate"]=>
string(10) "1293404541"
["cruser_id"]=>
string(1) "1"
["sorting"]=>
string(4) "1280"
["deleted"]=>
string(1) "0"
["hidden"]=>
string(1) "0"
["city"]=>
string(9) "Frankfurt"
}
[5]=>
array(9) {
["uid"]=>
string(1) "6"
["pid"]=>
string(2) "27"
["tstamp"]=>
string(10) "1293404564"
["crdate"]=>
string(10) "1293404564"
["cruser_id"]=>
string(1) "1"
["sorting"]=>
string(4) "1536"
["deleted"]=>
string(1) "0"
["hidden"]=>
string(1) "0"
["city"]=>
string(7) "Hamburg"
}
[6]=>
array(9) {
["uid"]=>
string(1) "7"
["pid"]=>
string(2) "27"
["tstamp"]=>
string(10) "1293404583"
["crdate"]=>
string(10) "1293404583"
["cruser_id"]=>
string(1) "1"
["sorting"]=>
string(4) "1792"
["deleted"]=>
string(1) "0"
["hidden"]=>
string(1) "0"
["city"]=>
string(8-) "München"
}
[7]=>
array(9) {
["uid"]=>
string(1) "8"
["pid"]=>
string(2) "27"
["tstamp"]=>
string(10) "1293404602"
["crdate"]=>
string(10) "1293404602"
["cruser_id"]=>
string(1) "1"
["sorting"]=>
string(4) "2048"
["deleted"]=>
string(1) "0"
["hidden"]=>
string(1) "0"
["city"]=>
string(9) "Stuttgart"
}
}
Hallo,
ich nochmal. Ich bin langsam ratlos bzw. zu dem Schluß gekommen, dass das Problem mit dem optionSplit tatsächlich am PHP Array liegen muss.
Alle Versuche in TypoScript funktionieren auch so wie es sein sollte, aber eben nicht so wie ich es haben will. Ein wrap = <span bla>|</span> funktioniert zwar, aber hier kann ich leider nicht den Menuezustand NO, ACT unterscheiden und außderdem will ich zwischen den Links noch Trennzeichen einbauen, das aber nicht hinter dem letzten Links erscheinen soll.
Ich komme alo um ein funktionierendes optionSplit nicht herum. Weiss denn niemand, wie das Array aufgebaut sein muss oder hat jemand einen Link. Google & Co. habe ich natürlich schon bemüht, bin aber nicht wirklich fündig geworden.
Danke schonmal für Tipps!
Also was man am OptionSplit machen kann habe ich gerade auch keine gute Idee, aber du kannst den Zustand (ACT, NO etc.) doch im Array mitgeben, als "ITEM_STATE", siehe auch TSREF, damit kannst du dann unterscheiden und richtig wrappen. Außerdem könntest du doch eigentlich auch die Position direkt im Array mitgeben und darüber die class setzen. Z.B. gibst du in einem Feld deines Arrays einfach ein "erstes", "mitte" oder "letztes" mit und lies das einfach mit field aus und setz es als class.
Davon abgesehen wird dein HTML Code mit dem was du da machst ungültig werden. Das TMENU wrap wird nur einmal um alle Menüpunkte gewrappt du hast also am Ende X offene span aber nur eines geschlossen. Außerdem ist Blocklevel Element in Inline Element nicht erlaubt (d.h. kein div in einem span), du müsstest also außen die divs nehmen und innen die spans.
Hallo,
ich habe zwei Beispiele gefunden wie das eigentlich funktionieren sollte. Da ist u.a. auch das mit "ITEM_STATE" drin erklärt und ich hab´s natürlich auch alles ausprobiert. Sogar das Array welches zurückgegeben wird habe ich "per Hand" angelegt und alles Mögliche ausprobiert.
http://www.typo3wizard.com/en/snippets/menus/create-menus-using-data-from-other-tables-than-pages.html
Beide Beispiele sind auf der Seite zu finden und scheinen dort auch zu funktionieren.
Problem ist und bleibt, dass optionSplit immer nur den mittleren Part annimmt und entsprechend wrappt. Ersten und letzten Teil gibt es warum auch immer nicht.
Meine Idee wäre, den ersten Link mit <span zu wrappen, dann alle dazwischen nicht und den letzten mit dem </span>. Dann gäbe es auch keine nur offenen spans.
Kein div in einem spam ist Sache des Grafikers. Aber trotzdem Danke für den Hinweis.
$array[0] = 'Eins';
$array[1] = 'Zwei';
$array[2] = 'Drei';
$array[3] = 'Vier';
$array[4] = 'Fünf';
NO.allWrap = <span class="xxx">| |*| <nix>|</nix> |*| |</span>
Das sollte doch dann sowas zurückgeben, oder liege ich da total falsch.
<span class="xxx"><a href="#">Eins</a>
<nix><a.. Zwei </a></nix>
<nix><a.. Drei </a></nix>
<nix><a.. Vier </a></nix>
<a.. Fünf </a></span>
joa, im prinzip schon. Das mit den Item states hab ich schon benutzt, das muss eigentlich funktionieren. Nochmal Arrays vergleichen...