[TYPO3-german] Nummerierung Überschriften und Inhaltsverzeichnis

Dr Dieter Porth typo3 at mobger.de
Fri Sep 5 08:21:17 CEST 2014


Am 4.9.2014 08:07, schrieb Alex Ru:
> Hallo,
>
> die Nummerierung der Contentelemente ist so in Ordnung. Ich hab nur
> das Problem, wie ich die gleiche Nummerierung in das
> Inhaltsverzeichnis bekomme.
> Im Script für das Inhaltsverzeichnis werden ja alle Content-Elemente
> gezählt. Im ersten Teil wird ja nur im Header nach dem
> Überschriftentyp geschaut.
>
> Aber ich glaube da muss ich ansetzen und bei den Überschriften den
> Zähler nur erhöhen, wenn der entsprechende Überschriftentyp da ist und
> bei allen anderen eben nicht zählen. Also alle Überschriften Typ 1-5
> jeweils erhöhen und >5 nichtmehr.
>
> Also lib.stdheader.10.1 - lib.stdheader.10.5 zählen und ab
> lib.stdheader.10.6 nichtmehr.
>
> Kann man hier dann irgendwie jeweils select.andWhere = 
> lib.stdheader.10.1, select.andWhere =  lib.stdheader.10.2 usw.
> einsetzen um LxCounter.prioriCalc = intval eben nur dann auszuführen?
>
> Oder geht das irgendwie mit CASE, wie Du schon geschrieben hast?
>
>
> tt_content.menu.20.3 >
> tt_content.menu.20 {
>  3 < styles.content.get
>  3.wrap = <div class="csc-menu csc-menu-3">|</div>
>  3.select.andWhere = sectionIndex!=0
>  3.select.pidInList.override.field = pages
>  3.renderObj = CASE
>  3.renderObj {
>    key.field = header_layout
>    default = COA
>    default {
>      stdWrap.fieldRequired = header
>      10 = LOAD_REGISTER
>      10.L1Counter.cObject = TEXT
>      10.L1Counter.cObject.data = register:L1Counter
>      10.L1Counter.cObject.wrap = |+1
>
>
> --> select.andWhere =  lib.stdheader.10.1 {           ????????????
>      10.L1Counter.prioriCalc = intval
> }
>
>      10.L2Counter = 0
>      10.L3Counter = 0
>      10.L4Counter = 0
>      10.L5Counter = 0
>            20 = TEXT
>      20.field = header
>      20.trim = 1
>      20.htmlSpecialChars = 1
>      20.dataWrap = <p class="csc-section">{register:L1Counter}&nbsp|</p>
>      20.typolink.parameter.field = pid
>      20.typolink.section.field = uid
>    }
>    1 < .default
>        2 < .default
>    2.10.L2Counter >
>    2.10.L2Counter.cObject < .2.10.L1Counter.cObject
>    2.10.L2Counter.cObject.data = register:L2Counter
>
> --> select.andWhere =  lib.stdheader.10.2 {           ????????????
>      10.L1Counter.prioriCalc = intval
> }
>
>    2.10.L2Counter.prioriCalc = intval
>    2.10.L1Counter >
>    2.20.dataWrap = <p
> class="csc-section">{register:L1Counter}.{register:L2Counter}&nbsp|</p>
>
> Gruß
>
> Alex
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Mit CASE wollte ich arbeiten, aber es war vorgestern abend spät und
funktionierte nicht so, wie ich es eigentlich wollte.  Du sagst, dein
Zähler arbeitet korrekt. Er erfasst nicht wirklich jeden Spezialfall.
Was passiert bei einem Kapitelsprung.
Statt
4.1
4.1.1.1.
sieht man
4.1.
4.1..1.
Aber man kann den Redakteur natürlich 'zwingen', immer alle
Gleiderungsschritte einzuzuhalten. ;-)

Also ich bin jetzt so soweit, dass ich auf einer Seite sowohl ein
Inhaltsverzeichnis aus den Kontent-Elemente erstellen kann und auch die
content-Element selbst mit ihrer Kapitel-Zählung ausgeben kann. das
Skript kann sogar bidirektionale Links zwischen Kapitel und Überschrift
des Content-Elementes erzeugen und eine alte Kapitelnummer als
Startpunkt verwenden.
Dabei ist das Inhaltsverzeichnis ein eigenes Objekt, welches über das
Content-Element Menu/Spezialmenüs gestellt wird. Genauso wie die
Kapitelzuühlung muss das Rendering ein eigenständiges TypoScript-Objekt
(hier: lib.menu.capital.contents) sein.

Das gesamte TypoScript für das Inhaltsverzeichnis ist also ein
eigenständiges Objekt, welches ich über zusäzlichen Eintrag in der
TSConfig (hier als didaktischer Vereinfachung ohne Bezug zur bei mir
obligatorischen Fremdsprachendatei als Container für alle sprachlichen
Informationen einer Website) verfügbar mache*.*

*TCEFORM.tt_content.menu_type.addItems.***ddp_m_capital_contents* *= Kapitelzählung für ausgewählte Kapitel-Elemente


Parallel muss natürlich die Auswertung von tt_content erweitert werden

*tt_content.menu.20.ddp_m_capital_contents *< *lib.menu.capital.contents
*


Mein COA "lib.menu.capital.contents" ist ein COA und enthält neben einen
LOAD_REGISTER für den Startzustand des Zähler. Weiter enthählt es eine
Kopie des CONTENT-Object styles.content.get, dass erweitert wurde um
        andWhere = CType.= ('header', [weitere CType-Aufzählung].)
und um das renderObj im folgender Form

*renderObj *< *tt_content
**renderObj *{
        *header.10 *= < lib.part.menu.capital.contents
        *header.20 *>
.... Aufzählung weiterer CTypes
} 


Und schon hast du ein Inhaltsverzeichnis, dass nur auf ausgewählte
CTypes reagiert und dass du als eigenständiges Menü per Inhaltselement
Spezial-Menüs einbinden kannst. Am Ende vom COA
"lib.menu.capital.contents" muss man natürlich per LOAD_Register
Original-Zähler wieder herstellen, damit anschlieÃßend bei den normalen
Content-Elementen normale Rendering beiginnen kann, wobei man hier
direkt in tt_Content den Zähler überschreibt.
(Wenn das Inhaltsverzeichnis am Ende der Seite stehen soll, muss man das
LOAD_REGISTER-ing natürlich anders strukturiert werden.)
Eigentlich liegt die Lösung nur im einfachen Copy&Paste "<" und im
bewusstes Referenzieren "= <" von TypoScript-Objecten, wobei die Objecte
jeweils ihre spezifischen Zicken haben.

Dieter


-- 
Dr. Dieter Porth - 
Mein kleines TYPO3-Labor: http://www.mobger.de/



More information about the TYPO3-german mailing list