[Typo3] Hierarchical section index?

Peter Klein peter at umloud.dk
Mon Nov 21 22:45:05 CET 2005


Hi Christian. Here's a version 100% Typoscript ;)
I also added the same numbering to the headers.
Let me know if you find it usefull.

# Replaces standard section menu with a numbered version
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
      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
    2.10.L2Counter.prioriCalc = intval
    2.10.L1Counter >
    2.20.dataWrap = <p 
class="csc-section">{register:L1Counter}.{register:L2Counter}&nbsp|</p>

    3 < .2
    3.10.L3Counter >
    3.10.L3Counter.cObject < .3.10.L2Counter.cObject
    3.10.L3Counter.cObject.data = register:L3Counter
    3.10.L3Counter.prioriCalc = intval
    3.10.L2Counter >
    3.20.dataWrap = <p 
class="csc-section">{register:L1Counter}.{register:L2Counter}.{register:L3Counter}&nbsp|</p>

    4 < .3
    4.10.L4Counter >
    4.10.L4Counter.cObject < .4.10.L3Counter.cObject
    4.10.L4Counter.cObject.data = register:L4Counter
    4.10.L4Counter.prioriCalc = intval
    4.10.L3Counter >
    4.20.dataWrap = <p 
class="csc-section">{register:L1Counter}.{register:L2Counter}.{register:L3Counter}.{register:L4Counter}&nbsp|</p>

    5 < .4
    5.10.L5Counter >
    5.10.L5Counter.cObject < .5.10.L4Counter.cObject
    5.10.L5Counter.cObject.data = register:L5Counter
    5.10.L5Counter.prioriCalc = intval
    5.10.L4Counter >
    5.20.dataWrap = <p 
class="csc-section">{register:L1Counter}.{register:L2Counter}.{register:L3Counter}.{register:L4Counter}.{register:L5Counter}&nbsp|</p>
  }
}

And a little bonus! ;)

# Changes the standard headers, so they got the same numbers as shown on the 
section TOC
lib.stdheader.10.1 >
lib.stdheader.10.1 = COA
lib.stdheader.10.1 {
  10 = LOAD_REGISTER
  10.H1Counter.cObject = TEXT
  10.H1Counter.cObject.data = register:H1Counter
  10.H1Counter.cObject.wrap = |+1
  10.H1Counter.cObject.if.isTrue.current = 1
  10.H1Counter.prioriCalc = intval
  10.H2Counter = 0
  10.H3Counter = 0
  10.H4Counter = 0
  10.H5Counter = 0

  20 = TEXT
  20.current = 1
  20.insertData = 1
  20.fontTag = 
<h1{register:headerStyle}{register:headerClass}>{register:H1Counter}:&nbsp;|</h1>
}
lib.stdheader.10.2 >
lib.stdheader.10.2 < lib.stdheader.10.1
lib.stdheader.10.2 {
    10.H2Counter >
    10.H2Counter.cObject < .10.H1Counter.cObject
    10.H2Counter.cObject.data = register:H2Counter
    10.H2Counter.prioriCalc = intval
    10.H1Counter >
    20.fontTag = 
<h2{register:headerStyle}{register:headerClass}>{register:H1Counter}.{register:H2Counter}:&nbsp;|</h2>
}
lib.stdheader.10.3 >
lib.stdheader.10.3 < lib.stdheader.10.2
lib.stdheader.10.3 {
    10.H3Counter >
    10.H3Counter.cObject < .10.H2Counter.cObject
    10.H3Counter.cObject.data = register:H3Counter
    10.H3Counter.prioriCalc = intval
    10.H2Counter >
    20.fontTag = 
<h3{register:headerStyle}{register:headerClass}>{register:H1Counter}.{register:H2Counter}.{register:H3Counter}:&nbsp;|</h3>
}
lib.stdheader.10.4 >
lib.stdheader.10.4 < lib.stdheader.10.3
lib.stdheader.10.4 {
    10.H4Counter >
    10.H4Counter.cObject < .10.H3Counter.cObject
    10.H4Counter.cObject.data = register:H4Counter
    10.H4Counter.prioriCalc = intval
    10.H3Counter >
    20.fontTag = 
<h4{register:headerStyle}{register:headerClass}>{register:H1Counter}.{register:H2Counter}.{register:H3Counter}.{register:H4Counter}:&nbsp;|</h4>
}
lib.stdheader.10.5 >
lib.stdheader.10.5 < lib.stdheader.10.4
lib.stdheader.10.5 {
    10.H5Counter >
    10.H5Counter.cObject < .10.H4Counter.cObject
    10.H5Counter.cObject.data = register:H5Counter
    10.H5Counter.prioriCalc = intval
    10.H4Counter >
    20.fontTag = 
<h5{register:headerStyle}{register:headerClass}>{register:H1Counter}.{register:H2Counter}.{register:H3Counter}.{register:H4Counter}.{register:H5Counter}:&nbsp;|</h5>
}



"christian reiter" <cr at n-o-s-p-a-m-cxd.de> wrote in message 
news:mailman.1.1132597272.2936.typo3-english at lists.netfielders.de...
> Hi Peter,
>
> Thank you for the tip. I can get numbering with the LOAD_REGISTER method 
> and
> it is a useful tip. however since I also needed to get the nested tags and
> numbering in several levels I have opted to solve this with a small
> extension fot the Menu/Sitemap content type.
> Thanks,
>
> christian
>
> "Peter Klein" <peter at umloud.dk> schrieb im Newsbeitrag
> news:mailman.1.1132510899.11191.typo3-english at lists.netfielders.de...
>> > But making a sectioned TOC should be easier, as you can create
> 'counters'
>> using LOAD_REGISTER. Then you create a CASE object based on the header
> type,
>> and create a counter for each header type.
>>
>
> 





More information about the TYPO3-english mailing list