[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