[Typo3-german] Letzter Menüpunkt im Tree

JoH info at cybercraft.de
Mon Oct 31 11:13:47 CET 2005


>> Möchte gern feststellen (in einem HMENU/TMENU) ob ein Menüpunkt
>> der letzte im Tree ist. Mit IFSUB, das haben wir hier gelernt ;-),
>> kann ich je nachdem ob eine Seite eine Seite IN SICH hat
>> reagieren... Aber wie stelle ich fest, ob sich noch eine Seite unter
>> der aktuellen befindet.
>>
>> Wozu?
>>
>> Im groben und ganzen soll eine Sitemap ähnlich aussehen, wie die
>> Treeview im Backend. Dort gibt es z.B. für Seiten die NICHT die
>> letzte im Tree ist eine Grafik namens "join.gif" (gepunktete Linie).
>> Seiten, die das Ende im Tree darstellen haben aber die Grafik
>> "joinbottom.gif" vor der Seite.
>>
>> Sowas, nur andere Grafiken, will ich für die Sitemap abbilden.
>>
>> Puh... ich hoffe das man das dort oben versteht :-( - JoH... Dein
>> Einsatz....
>
> einen Menüstatus im eigentlichen Sinne kenne ich dafür auch nicht. Du
> kannst aber das wrap und alle anderen Eigenschaften der Menüpunkte
> mit OptionSplit variieren. Das ist im TYPO3 Buch ziemlich gut
> beschrieben. Im groben sieht das zum Beispiel so aus:
>
> MeinMenu.1.NO.wrap = <li class="erster_Menuepunkt">|</li> |*| <li
> class="mittlere_Menuepunkte">|</li> |*| <li
> class="letzter_Menuepunkt">|</li>
>
> Beschreibung siehe:
>
http://typo3.org/documentation/document-library/doc_core_tsref/optionSplit/

Wenn ich schon so direkt angesprochen werde und es dazu noch in den Bereich
optionSplit geht, muß ich natürlich auch meinen Senf dazugeben:

1. optionSplit funktioniert für ein solches Konzept _nicht_! Grund: Eine
Seite kann sehr wohl die letzte innerhalb ihrer Ebene sein (optionSplit kann
das auch berücksichtigen), aber dennoch muß sie nicht die letzte im Menu
sein.
2. Es gibt keinen direkten Status, um das zu überprüfen, aber einen
Workaround.

Mach ein "blindes" Menu das nur ein Register mit der uid füttert. Nutze
diese uid in einer if Abfrage für das sichtbare Menu.
Wichtig ist hierbei, daß Dinge wie expAll, entryLevel, Anzahl der Ebenen
etc. für beide Menus exakt identisch sein müssen!

temp.checkLastItem = HMENU
temp.checkLastItem {
    1 = TMENU
    1 {
        NO {
            stdWrap.cObject = LOAD_REGISTER
            stdWrap.cObject {
                lastItemUid.cObject = TEXT
                lastItemUid.cObject.field = uid
            }
        }
    }
    2 < .1
    3 < .1
    4 < .1
    5 < .1
}

Da das Register einfach nur überschrieben wird, muß logischerweise die uid
des letzten Items nach einem Durchlauf in diesem Register stehen.

temp.menuWithLastItem = HMENU
temp.menuWithLastItem {
    1 = TMENU
    1 {
        wrap = <ul>|</ul>
        NO {
            wrapItemAndSub = |</li>
            allWrap.cObject = COA
            allWrap.cObject {

                ### Wenn's nicht übereinstimmt
                ### (zu prüfen mit equals und "negate=1")
                ### kann es kein letztes Item sein

                10 = TEXT
                10.value = <li class="standard">|
                10.if {
                    value.data = register : lastItemUid
                    equals.field = uid
                    negate = 1
                }

                ### Wenn's übereinstimmt
                ### (zu prüfen mit equals)
                ### muß es ein letztes Item sein

                20 = TEXT
                20.value = <li class="lastItem">|
                20.if {
                    value.data = register : lastItemUid
                    equals.field = uid
                }
            }
        }
    }
    2 < .1
    3 < .1
    4 < .1
    5 < .1
}

temp.myMenu = COA
temp.myMenu {

    ### Erst das Register füllen
    10 < temp.checkLastItem

   ### Dann das Menu erzeugen
    20 < temp.menuWithLastItem
}

marks.MENU < temp.myMenu

So (oder so ähnlich) könnte das aussehen.
Ist nur ein prinzipieller Ansatz und ungetestet.
Laßt mich wissen, ob's geht ...

Joey

-- 
Wenn man keine Ahnung hat: Einfach mal Fresse halten!
(If you have no clues: simply shut your knob sometimes!)
Dieter Nuhr, German comedian
openBC: http://www.openbc.com/go/invuid/Jo_Hasenau





More information about the TYPO3-german mailing list