

Following code snippet displays the 10 last updated pages and links them (top10). This is a changed version of the two following Snippet that uses a HMENU to read the unique page id's.
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 = | |*| ,| |*| # Here we need a optionSplit # so that the first uid has no , } } 2 = TMENU 2 { expAll = 1 NO { doNotLinkIt = 1 stdWrap.field = uid stdWrap.wrap = ,| } } 3 < .2 4 < .2 # etc for all available menu levels } } 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> } } }
This code displays the 10 last updated pages and links them. This works great if you only have one language. It doesn't work on multilanguage pages because you cannot get records from the pages_language_overlay table using a select. The second sample works multilanguage.
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> }
This sample works on multilanguage pages, because it doesn't list the updated pages but the contents. You have to add always a header to the content otherwise you won't get a link :). In the right column you can see what this looks like.
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> }
Here some link to the official documentation:




The line :
10.typolink.parameter.stdWrap.dataWrap=#uid
should be replaced by :
typolink.parameter.stdWrap.dataWrap=|#{field:uid}
Otherwise the script works perfectly.
10.typolink.parameter.stdWrap.dataWrap=|#{field:uid}
Add comment