[TYPO3-german] Typo3 Kochbuch - Rezept 13.1 -Alphabtisches Inhaltsverzeichnis

Robert Wildling rowild at gmx.net
Wed Jan 19 12:31:15 CET 2011


Hi, Leute,

kennt jemand dieses Rezept? Sehr geniale Sache, die sich diese Leute da 
ausgedacht haben!

Ich teste es derzeit, weil ich demnächst ein kleines Lexikon realisieren 
soll, das ca 120 Begriffe aus dem musikethnologischen Bereich nach 
Ländern geordnet anbietet - also nicht groß.

Und nachdem meiner Erfahrung nach für Redakteure das Anlegen von Seiten 
und Inhalte das Einfachste ist, dachte ich mit, ich lege einen Menüpunkt 
"Lexikon" an, darunter die einzelnen Länder und die Inhalte auf diesen 
Seiten sind die einzelnen Lexikonartikel.

Bis daher klappt auch alles ganz wunderbar, die Buchstaben werden 
alphabetisch angezeigt, darunter alle Begriffe - und der Menübaum ist 
sowas wie ein Kategoriebaum.

Jetzt soll aber - in der alphabetische Liste - neben einem einzelnen 
Begriff auch das Land stehen (also der Menüpunkt) - und da scheitere ich 
jetzt ganz kläglich.

Mein Lösungsansatz war der, ein tempObj zu erstellen:

temp.GET_TITLE = CONTENT
temp.GET_TITLE {
   table = pages
   select {
     selectFields = uid,title
     where.dataWrap = uid={field:pid}
   }
   renderObj = COA
   renderObj {
     10 = TEXT
     10.field = title
   }
}

und diesen dann im etwas abgewandelten Script als "append" im Abschnitt, 
wo die <li>-Elemente erzeugt werden, einzulesen (im Script steht links 
so ein Pfeil: ---->):


temp.GET_LEXICON = COA
temp.GET_LEXICON {
   10 < temp.LEXICON

   20 = CONTENT
   20 {
     table = tt_content
     select {
       pidInList.data = register:allPages
       orderBy = header
       languageField = sys_language_uid
       andWhere = colPos=0 AND sectionIndex=1 AND header !=''
     }
     renderObj = COA
     renderObj {
       10 = TEXT
       10 {
         outerWrap.cObject = COA
         outerWrap.cObject {
           10 = TEXT
           10 {
             value = <ul class="letterBox">|
             if.isFalse.data = register:firstLetter
           }
           20 = TEXT
           20 {
             value = </ul><ul class="letterBox">|
             if.isTrue.data = register:firstLetter
           }
         }
         field = header
         case = upper
         crop = 1|
         if {
           value.data = register:firstLetter
           equals.field = header
           equals.case = upper
           equals.crop = 1|
           negate = 1
         }
       }

       20 = COA
       20 {
         5 = HTML
         5.value = <li class="linkBox">

         20 = TEXT
         20 {
           field = header
---->     append < temp.GET_TITLE
           #case = upper
           typolink.parameter.dataWrap = {field:pid}#{field:uid}
         }

         40 = HTML
         40.value = </li>
       }

       30 = LOAD_REGISTER
       30 {
         firstLetter.field = header
         firstLetter.case = upper
         firstLetter.crop = 1|
       }
     }
   }
   30 = TEXT
   30.value = </ul>
}



/* MENU */
temp.LEXICON = HMENU
temp.LEXICON {
   special = directory
   special.value = 8
   1 = TMENU
   1 {
     expAll = 1
     NO {
       #doNotShowLink = 1
       stdWrap.cObject = LOAD_REGISTER
       stdWrap.cObject {
         #allPages.field = uid
         allPages.dataWrap = {register:allPages},{field:uid}
       }
     }
   }
   2 < .1
   3 < .1
   4 < .1
   5 < .1
   6 < .1
   7 < .1
   8 < .1
   9 < .1
}


Leider liest mir das Skript so immer ALLE Menüpunkte aus und setzt diese 
Hinter dem Lexikonbegriff.

Wie schaffe ich es denn, dass nur jeweils der Page title ausgelesen 
wird, der gerade zum jeweiligen Lexikonbeitrag gehört?

Danke für die Hilfe im voraus!
Robert


More information about the TYPO3-german mailing list