

Folgendes Code Snippet ermöglicht es die 10 zuletzt upgedateten Seiten mit den zuletzt geänderten Inhalten aufzulisten und zu verlinken (top10). Dieses Snippet ist eine aktualisierte Version der beiden nachfolgenden, es wird hier ein HMENU Objekt zum auslesen der Seiten-Ids verwendet.
temp.top10=CONTENT temp.top10 { table = tt_content wrap=<h1>Top 10 Updates</h1> <ol>|</ol> select{ orderBy = tstamp DESC languageField=sys_language_uid max = 10 pidInList.cObject = HMENU pidInList.cObject { entryLevel = 0 1 = TMENU 1 { expAll = 1 NO { doNotLinkIt = 1 stdWrap.field = uid stdWrap.wrap = | |*| ,| |*| # Hier wird optionSplit benötigt # Damit die erste uid kein , erhält } } 2 = TMENU 2 { expAll = 1 NO { doNotLinkIt = 1 stdWrap.field = uid stdWrap.wrap = ,| } } 3 < .2 4 < .2 # usw. für alle verfübaren Ebenen. } } renderObj = COA renderObj { 10 = TEXT 10{ field = header typolink.parameter.field=pid typolink.parameter.stdWrap.dataWrap=|#{field:uid} wrap = <li>| } 20 = TEXT 20{ field = tstamp strftime = %d-%b-%Y %H:%M:%S wrap = geändert am | </li> } } }
Folgendes Code snippet ermöglicht es die 10 zuletzt upgedateten Seiten mit den zuletzt geänderten Inhalten aufzulisten und zu verlinken. Funktioniert wunderbar falls man nur eine Sprache hat. Bei Mehrsprachigkeit funktioniert es leider nicht bzw. zeigt nur die Standardsprache, da es laut TSRef mit select nicht möglich ist Daten aus der pages_language_overlay Tabelle zu lesen. Unten seht ihr ein anderes sample welches Mehrsprachig funktioniert.
temp.top10 = COA temp.top10 { 10 = LOAD_REGISTER 10{ lvl1uids.cObject = CONTENT lvl1uids.cObject { table=pages select.pidInList.data = leveluid:0 renderObj = TEXT renderObj.field = uid renderObj.wrap = |, } lvl2uids < .lvl1uids lvl2uids.cObject.select.pidInList.data= register:lvl1uids lvl3uids < .lvl1uids lvl3uids.cObject.select.pidInList.data= register:lvl2uids lvl4uids < .lvl1uids lvl4uids.cObject.select.pidInList.data= register:lvl3uids lvl5uids < .lvl1uids lvl5uids.cObject.select.pidInList.data= register:lvl4uids alluids.cObject = COA alluids.cObject { 10=TEXT 10.data = register:lvl1uids 20=TEXT 20.data = register:lvl2uids 30=TEXT 30.data = register:lvl3uids 40=TEXT 40.data = register:lvl4uids 50=TEXT 50.data = register:lvl5uids 60=TEXT 60.data = leveluid:0 } } 20 = CONTENT 20 { table = pages select { pidInList.data = register:alluids orderBy = tstamp DESC max = 10 } renderObj = COA renderObj { 10 = TEXT 10.field = title 10.typolink.parameter.field=uid 10.wrap = <li>| 20 = TEXT 20.field = tstamp 20.strftime = %d-%b-%Y %H:%M:%S 20.wrap = geändert am | </li> } } wrap=<h1>Top 10 Updates</h1> <ol>|</ol> }
Dieses zweite sample umgeht schlicht das Problem in dem es nicht die pages listet sondern die Contents. Bei Contents ist es kein Problem eine andere sprache auszulesen. Es muss ein Header beim content eingegeben sein sonst bekommt man keinen Link :). Rechts kann man sehen wie es ausieht.
temp.top10 = COA temp.top10 { 10 = LOAD_REGISTER 10{ lvl1uids.cObject = CONTENT lvl1uids.cObject { table=pages select.pidInList.data = leveluid:0 renderObj = TEXT renderObj.field = uid renderObj.wrap = |, } lvl2uids < .lvl1uids lvl2uids.cObject.select.pidInList.data= register:lvl1uids lvl3uids < .lvl1uids lvl3uids.cObject.select.pidInList.data= register:lvl2uids lvl4uids < .lvl1uids lvl4uids.cObject.select.pidInList.data= register:lvl3uids lvl5uids < .lvl1uids lvl5uids.cObject.select.pidInList.data= register:lvl4uids alluids.cObject = COA alluids.cObject { 10=TEXT 10.data = register:lvl1uids 20=TEXT 20.data = register:lvl2uids 30=TEXT 30.data = register:lvl3uids 40=TEXT 40.data = register:lvl4uids 50=TEXT 50.data = register:lvl5uids 60=TEXT 60.data = leveluid:0 } } 20 = CONTENT 20 { table = tt_content select { pidInList.data = register:alluids orderBy = tstamp DESC languageField=sys_language_uid max = 10 } renderObj = COA renderObj { 10 = TEXT 10.field = header 10.typolink.parameter.field=pid 10.typolink.parameter.stdWrap.dataWrap=#uid 10.wrap = <li>| 20 = TEXT 20.field = tstamp 20.strftime = %d-%b-%Y %H:%M:%S 20.wrap = geändert am | </li> } } wrap=<h1>Top 10 Updates</h1> <ol>|</ol> }
Hier noch ein paar Links zur offiziellen Dokumentation:




Funzt ja auch erstman so weit ganz gut.
Habe da noch ein paar Fragen?
- lassen sich statt Seiten auch Inhaltselemente damit anzeigen?
- ein Teaser (30 Wörter) zum Inhaltsbereich wäre auch noch nett-
- Seitenlink, Teaser, Datum separat mi CSS stylen
Vielleicht hat ja schon jemand ne Lösung. Wäre echt nett und leider auch dringend.
Bitte Info gerne per Mail.
Bei mir musste ich:
10.typolink.parameter.stdWrap.dataWrap=#uid
in ändern
10.typolink.parameter.stdWrap.dataWrap = |#uid{field:uid}
und zum obigen:
....
renderObj = COA
renderObj {
10 = TEXT
10.field = header
10.typolink.parameter.field = pid
10.typolink.parameter.stdWrap.dataWrap=#uid
##oder##10.typolink.parameter.stdWrap.dataWrap = |#uid{field:uid}
10.wrap = <li>|
20 = TEXT
20.field = bodytext
20.stdWrap.crop = 30|...|1
30 = TEXT
30.field = tstamp
30.strftime = %d-%b-%Y %H:%M:%S
30.wrap = geändert am | </li>
}
ne "parsefunc" würde ich auf den "bodytext nicht anwenden...
besser wohl doch "parsefuncen", sonst gibt's evtl Probleme, wenn Links o. ä. in dem gecroppten String sind.
Also:
renderObj = COA
renderObj {
10 = TEXT
10.field = header
10.typolink.parameter.field = pid
10.typolink.parameter.stdWrap.dataWrap=#uid
##oder##10.typolink.parameter.stdWrap.dataWrap = |#uid{field:uid}
10.wrap = <li>|
20 = TEXT
20.field = bodytext
###hier oder so parseFunc rein
20.parseFunc = < lib.parseFunc_RTE
20.stdWrap.crop = 30|...|1
30 = TEXT
30.field = tstamp
30.strftime = %d-%b-%Y %H:%M:%S
30.wrap = geändert am | </li>
}
Holt Inhalt aus "bodytex", dann "parsefunc" damit das sauber gerendert wird, danach die Tags rauskicken damit ordentlicher "nur Text" entsteht.
(Ich verspreche in Zukunft erst zu testen, und dann zu schreiben)
Nu is hoffentlich richtich:
renderObj = COA
renderObj {
10 = TEXT
10.field = header
10.typolink.parameter.field = pid
10.typolink.parameter.stdWrap.dataWrap=#uid
##oder##10.typolink.parameter.stdWrap.dataWrap = |#uid{field:uid}
10.wrap = <li>|
20 = TEXT
20.field = bodytext
20.parseFunc = < lib.parseFunc_RTE
20.stdWrap.HTMLparser=1
##hier die Tags rein, die entfernt werden sollen
20.stdWrap.HTMLparser.removeTags = a,img
20.stdWrap.crop = 90|...|1
30 = TEXT
30.field = tstamp
30.strftime = %d-%b-%Y %H:%M:%S
30.wrap = geändert am | </li>
}
Damit schaffe ich es, die verdammte pidInList Beengung von der SELECT Anweisung zu befreien, um in meiner ganzen Tabelle suchen zu können!
2 Tage lang habe ich vergebens probiert, damit klappts endlich. VIELEN DANK !!!!!!
Danke für die Funktion.
Was muß ich umstellen, dass auch die Inhalte von zugriffsgeschützten Seiten berücksichtigt werden ?
Wenn man angemeldet ist, werden diese mit dargestellt. Ohne Anmeldung leider nicht.
Viele Grüße
Heinz
danke für die Mühe,
aber ich bin ein absoluter Newbie.
Wie und wo füge ich den Code ein damit er auf einer bestimmten Seite angezeigt wird???
Ich brauche die letzten Änderungen auf einer "history" Seite.
Danke :)
tolles Snippet!
Wo muss ich den Tag <span class="nr1"> wie bei eurem Beispiel rechts einbauen um es so alternierend oder mit den Zahlen zu formatieren?
Besten Dank!
Mo
Add comment