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

Tom Arnold t3list at bnt.de
Sun Nov 21 12:46:23 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