Erstellen Top 10 der zuletzt aktualisierten Seiten / Inhalte

Submitting your vote...
Rating: 4.3 of 5. 10 vote(s).
Click the rating bar to rate this item.

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 =  &nbsp;ge&auml;ndert am &nbsp;| </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 =  &nbsp;ge&auml;ndert am &nbsp;| </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 =  &nbsp;ge&auml;ndert am &nbsp;| </li>
    }
     
     
  }
   
   
  wrap=<h1>Top 10 Updates</h1> <ol>|</ol>
   
}

 

Hier noch ein paar Links zur offiziellen Dokumentation:

TSREF LOAD_REGISTER

TSREF CONTENT

TSREF SELECT

 

 

 



Comments


A.B., 19-08-07 12:32:
Hi, ich danke für das coole Snippet.

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.
Matthias, 13-02-08 01:36:
Erstemal: Merci :-)
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 = &nbsp;ge&auml;ndert am &nbsp;| </li>
}
ne "parsefunc" würde ich auf den "bodytext nicht anwenden...
Matthias, 13-02-08 02:20:
Uuuups, ich nochmal....
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 = &nbsp;ge&auml;ndert am &nbsp;| </li>
}
Matthias, 13-02-08 02:44:
Also...20 = TEXT
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 = &nbsp;ge&auml;ndert am &nbsp;| </li>
}
T, 09-04-09 13:55:
SUPERTOLL!
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 !!!!!!
Heinz, 08-07-09 16:06:
Hallo,

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
Lena, 08-06-10 13:49:
Hallo,
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 :)
Moritz, 01-06-11 07:30:
Hallo,
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

* - required field

*



*
*

Top 10 Updates

Login geändert am  09-Sep-2010 11:31:35
Schöne Schriften mit Google Font API geändert am  20-May-2010 16:36:59
TS basierte Searchbox für Indexed Search geändert am  18-May-2010 18:26:54
TYPO3 SEO geändert am  30-Apr-2010 09:43:20
Suchmaschinenfreundliche grafische Überschriften in TYPO3 geändert am  30-Apr-2010 09:33:56
Erstellen eines einfachen Infocenters mit TYPO3  geändert am  17-Nov-2009 12:11:22
Funktionierendes Section Menu mit TemplaVoila geändert am  05-May-2009 12:42:40
"Nicht im Menü" in Sitemap anzeigen geändert am  05-May-2009 12:12:24
Implementation des DHTML Menüs von brainjar.com  geändert am  01-Feb-2009 14:01:36
Beispiel DHTML Menü geändert am  01-Feb-2009 13:47:38

Latest comments

18-Jan-2012 11:03:20
cjjgeb cjjgeb schrieb: qUWC8M <a href="http://yviwfgyvopxz.com/">yviwfgyvopxz</a>
Typolink
18-Jan-2012 05:39:25
Melia Melia schrieb: Stands back from the kybeoard in amazement! Thanks!
Typolink
02-Jan-2012 22:48:33
Dietmar schrieb: Doch, genau das soll es doch sein. Sonst könntest Du ja die Seiten in der Vorschau nicht...
Eigenes vhost für das TYPO3 Backend
English
Suche: