[TYPO3-german] TYPO3 Kochbuch: Navigation zu "alphabetisches Inhaltsverzeichnis"

JoH asenau info at cybercraft.de
Mon Jan 15 17:30:43 CET 2007


> Habe begeistert das Rezept 13.1 "Ein alphabetisches Inhaltsverzeichnis
> anlegen" ausprobiert und dadurch die Lösung meines Problems zur Hälfte
> gefunden.
>
> Ich möchte jetzt allerdings oberhalb davon eine Navigation bestehend
> aus den Anfangsbuchstaben anlegen, welche wiederum auf die
> Anfangsbuchstaben der Inhaltselemente die weiter unten aufgelistet
> werden verweisen.
>
> Ich möchte nun nicht den ganzen Quellcode hier reinstellen, da ich mir
> vorstellen könnte, dass es die Autoren vielleicht nicht beglückt wenn
> das Kochbuch früher oder später komplett im Forum steht...

Solange Du den restlichen Text nicht mitpostest, ist das kein Problem ;-)

> ...
>   outerWrap.cObject {
>   10 = TEXT
>   10 {
>      value = |
>      if.isFalse.data = register:firstLetter
>      typolink.parameter.dataWrap = #TEST
> ...
>
> Ich krieg die Verlinkung soweit hin, dass in der Ausgabe ein Link
> entsteht, der auf meineseite.de/bla.html#TEST verweist.
> Aber wie krieg ich denn hin dass dort auf #A, #B, #D oder #H
> verwiesen wird?

Das Problem dürfte darin liegen, daß die Rendering Engine nicht genau
"weiß", welche Buchstaben Du brauchst, weil Du die eigentliche Liste ja erst
danach renderst.
Wenn Du es automatisiert machen willst, bedeutet das, daß Du zuerst die
Liste rendern mußt, um damit ein Register der verwendeten Buchstaben zu
füllen. (register:firstLetter enthält ja immer nur den gerade aktuellen
Buchstaben.)

Dazu baust Du einfach im LOAD_REGISTER Element, in dem register:firstLetter
befüllt wird, ein weiteres Register ein.

letterList.cObject = COA
letterList.cObject {
    10 = TEXT
    10.dataWrap = {register:firstLetter}
    10.if.isFalse.data = register:letterList
    20 = TEXT
    20.dataWrap = {register:letterList},{register:firstLetter}
    20.if.isTrue.data = register:letterList
}

Mit diesem Register kannst Du _danach_ das Menü erstellen.
z.B. so:

temp.whatever = COA
temp.whatever {
    wrap = <ul class="alphamenu">|</div>
    10 = TEXT
    10.data = register:letterList
    10.split {
        token = ,
        cObjNum = 1
        1 {
            wrap = <li>|</li>
            typolink.parameter.current = 1
            typolink.parameter.wrap = #|
        }
    }
}

Damit es dann doch "davor" erscheint, müsstest Du das Ganze mit CSS
entsprechend positionieren.

Wenn das Ganze nicht dynamisch sein muß, würde es reichen nach dem gleichen
Prinzip ein COA mit 26+ Elementen zu erzeugen, die jeweils #A, #B usw. als
Typolink-Parameter erhalten.

temp.whatever = COA
temp.whatever {
    wrap = <ul class="alphamenu">|</div>
    10 = TEXT
    10.value = A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P Q,R,S,T,U,V,W,X,Y,Z
    10.split {
        token = ,
        cObjNum = 1
        1 {
            wrap = <li>|</li>
            typolink.parameter.current = 1
            typolink.parameter.wrap = #|
        }
    }
}

das kannst Du dann auch "davor" platzieren, jedoch könnte es dann immer noch
sein, daß Links ins Leere verweisen, weil der Buchstabe nicht vorkommt.

HTH

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/Xing: http://www.cybercraft.de
T3 cookbook: http://www.typo3experts.com




More information about the TYPO3-german mailing list