[TYPO3-german] Menü (TMENU): Wie Items vor und nach dem ACT-Item unterschiedlich rendern?

JoH asenau info at cybercraft.de
Thu Jun 21 00:49:56 CEST 2007


>> Ich habe gerade keine Zeit das auszuprobieren, aber es könnte mit
>> LOAD_REGISTER im ACT TMENUITEM gehen: dort eine Flag-Variable setzen
>> und diese in NO usw. abfragen mit z.B.:
>
> der Ansatz klingt gut, scheitert aber bei mir noch in der Praxis. Der
> Fehler liegt wohl im Bereich LOAD_REGISTER bzw. im Condition Zugriff
> auf meine selbst eingeführte Variable "menu_item". Im ACT bin ich mir
> nicht sicher, ob ich LOAD_REGISTER richtig lade. Da ich je nach
> Cond.-Ergebnis 2 varianten von NO.allWrap setzen muss, war mir die
> if-Variante nicht schlüssig.
>
> Auch
>
> [globalVar = register:menu_item_current = 1]
>   lib.main_menu.20.1.NO.allWrap = ....
> [global]
>
> scheitert. Ich bekomme nie ein
>
> <li><span class="after"> | </span></li>
>
> gesetzt.
>
> Mein Menü TS:

Hab ich mal entfernt, weil das so nie funktionieren kann.
ACT = LOAD_REGISTER geht gar nicht und die condition hilft hier auch nicht
weiter, weil Du das mit einer if Abfrage oder besser noch in einem CASE
machen solltest.
Das <ul> gehört in einen wrap, das <span> ist überflüssig etc. pp.

Also nochmal von vorn ;-)

lib.main_menu = COA
lib.main_menu  {
    10 = HMENU
    10 {
        1 = TMENU
        1 {
            wrap = <ul>|</ul>
            NO {
                allWrap.cObject = CASE
                allWrap.cObject {

                    # der Name des Registers
                    # ist frei wählbar

                    key.data = register:activeIsSet

                    # Wenn nicht 1
                    # dann nimm den
                    default = TEXT
                    default.value = <li class="before">|</li>

                    # Wenn 1,
                    # dann nimm den
                    1 = TEXT
                    1.value = <li class="after">|</li>
                }
                stdWrap.htmlSpecialChars = 1
            }
            ACT = 1
            ACT {
                allWrap = <li id="current">|</li>
                stdWrap.htmlSpecialChars = 1

                #Hier wird das Register
                # auf 1 gesetzt

                after.cObject = LOAD_REGISTER
                after.cObject {
                    activeIsSet = 1
                }
            }
        }
    }
}

So finden alle NO, die nach einem ACT kommen, die 1 im Register und bekommen
deswegen über die Abfrage in einem CASE einen anderen allWrap.
Ich muß allerdings zugeben, daß das alles andere als Basic TypoScript ist
:-)

HTH

Joey

-- 
Wenn man keine Ahnung hat: Einfach mal Fresse halten!
(If you have no clues: simply shut your gob sometimes!)
Dieter Nuhr, German comedian
openBC/Xing: http://www.cybercraft.de
T3 cookbook: http://www.typo3experts.com




More information about the TYPO3-german mailing list