[TYPO3-german] re. TS: Inhalte von Unterseiten auf der Oberseite zeigen

Tom Arnold t3list at bnt.de
Sun Nov 21 12:39:39 CET 2010


Hi,

Ein Nachtrag fürs Archiv: 
Ich habe eine recht smarte Lösung hinbekommen, indem ich die Extension "rgteaser" verwende, aber die Ausgabe der so modifizierten Sitemap per TS komplett an die eigenen (bzw Kunden-) Bedürfnisse anpasse. :-)
Man kann die Extension wahrscheinlich auch komplett weglassen, wenn man rein per TS (über ein temp.Menu) erstmal die PIDs der Unterseiten sammelt, diese dann mit LOAD_REGISTER im TS für die Content-Ausgabe verwendet.
Die Extension benutzt hierfür eine kleine PHP-Userfunction, die nur eine kommaseparierte Liste der Unterseiten-PIDs zurückgibt.

Hier mal das TS für die Contents:
#------------------------------------------------------------------------------------------#
tt_content.menu.20.101 = CONTENT
tt_content.menu.20.101 {
  # PIDs der unterseiten holen
  table = pages
  select {
    pidInList.cObject = USER
    pidInList.cObject {
      userFunc = user_getpages->main
      treeDepth = 1
    }
    #orderBy = tstamp DESC
    orderBy = sorting ASC
    #where = tx_rgteaser_teaser = 1   
  }
  # fuer jeder der PIDs in der pidInList
  renderObj = COA_INT
  renderObj {
    # die seiten id, aus der die contents kommen speichern:
    2 = LOAD_REGISTER
    2 {
      myPID.cObject = TEXT
      myPID.cObject.field = uid
    }
    
    # stdWrap fuer die gesamte sektion
    stdWrap.dataWrap = <div class="section-container" id="section{register:myPID}"> | </div>    
       
    # die tab-navigation
    5 < temp.menu
    #
    
    # wrapper fuer den sektionsinhalt
    10 = COA
    10.wrap = <div class="section-wrap"> | </div>
    10 {
      # linke + rechte spalte -
      10 = COA
      10.wrap = <div class="section-cols"> | </div>
      10 {
        # linke spalte -
        10 = COA    
        10 {      
          wrap = <div class="section-col left"> | </div>
          # der seitentitel mit untertitel --
          10 = COA
          10 {
            10 = TEXT
            10.field = subtitle
            10.noTrimWrap = |<span>|</span> |
            20 = TEXT
            20.field = title
            wrap = <h1> | </h1>
            stdWrap.wrap = <div class="section-header"> | </div>
          }
          # -- ende seitentitel
        
          # bilder aus rechter spalte --
          20 = CONTENT
          20 {
            table = tt_content
            select {
              pidInList.data = register:myPID
              where = colPos=2
              selectFields = image,imagewidth,imageorient,imagecaption,imagecols,imageborder
            }
            renderObj < tt_content.image
            renderObj {
              # --- debug --- #
              #99 = TEXT
              #99.data = debug:data
            }
            wrap = <div class="section-sidebar"> | </div>
          }
          # -- ende bilder rechte spalte 
        }
        # - ende linke spalte
        
        # hauptcontent -
        20 = COA
        20 {
          wrap = <div class="section-col main"> | </div>
          # introtext --
          10 = CONTENT
          10 {
            wrap = <div class="section-intro"> | </div>
            table = tt_content
            select {
              pidInList.data = register:myPID
              selectFields = header,bodytext
              where = colPos=1
            }
            renderObj = COA
            renderObj {
              10 = TEXT
              10.field = header
              10.required = 1
              10.parseFunc < tt_content.text.10.parseFunc
              20 = TEXT
              20.field = bodytext
              20.required = 1
              20.parseFunc < tt_content.text.20.parseFunc
              # --- debug --- #
              #99 = TEXT
              #99.data = debug:data
            }
          }
          # -- ende introtext
          # maincontent --
          20 = CONTENT
          20 {
            wrap = <div class="section-content"> | </div>
            table = tt_content
            select {
              pidInList.data = register:myPID
              #selectFields = header,bodytext
              where = colPos=0
            }
            renderObj = COA
            renderObj {
              10 = TEXT
              10.field = header
              10.required = 1
              10.wrap = <h2>|</h2>
              20 = TEXT
              20.field = bodytext
              20.required = 1
              20.parseFunc < tt_content.text.20.parseFunc
              #20.parseFunc < lib.parseFunc_RTE
              # --- debug --- #
              #99 = TEXT
              #99.data = debug:data
            }
            # --- ende renderObj
          }
          # -- ende maincontent
        }
        # - ende hauptcontent
      }
      # - ende linke + rechte spalte
      # footer -
      20 = CONTENT
      20 {
        wrap = <div class="section-footer"> | </div>
        table = tt_content
        select {
          pidInList.data = register:myPID
          selectFields = header,image,imagewidth,imageorient,imagecaption,imagecols,imageborder
          where = colPos=3
        }
        renderObj < tt_content.image
        renderObj {
          # --- debug --- #
          #99 = TEXT
          #99.data = debug:data
        }
      }
      # - ende footer
    }
    # ende sektionsinhalt
  }
  # ende renderObj
}
# ende sitemap
#------------------------------------------------------------------------------------------#

Live sieht das dann so aus:

<http://www.panatura.com/398.html>

Backend Seitenstruktur ist:
(...)
• Green World
	• The Future of Global Food
	• Ecofriendly
	• Sustainability
	• Our Vision
(...)


Viele Grüße
Tom

-- 
BNT.DE Gesellschaft für interaktive Medien
Löwengasse 27E
60385 Frankfurt am Main
http://www.bnt.de/

/* snip ---- */
> Anders formuliert, wie kann ich in Typoscript einen Loop bauen, der mir nacheinander, sooft er Unterseiten findet, Contentobjekte, die ich in Marker übergeben kann, zusammenbastelt?
/* ---- snip */




More information about the TYPO3-german mailing list