HMENU: "special = updated" mit Typoscript nachgebildet

30.12.2011 11:26

Ihr könnt den Code ja selber anpassen, so kommt Ihr wenigstens an den Ansatz.

Da unter TYPO3-V4.6 die Menü-Funktion "special = updated" nicht mehr funktioniert (Bug-Id: 32374 ) habe ich sie mal mit reinem Typoscript versucht nachzubilden, nur etwas "aufgepeppt" mit deutschem Text. Den könnte man aber auch mit variablem Text aus der locallang.xml ersetzen.

Dieser Code ersetzt die Sitemap-Funktion "Kürzlich aktualisierte Seiten" (Recently updated pages), die unter V4.6 nur noch eine weiße Seite zeigt!

Falls Sie realUrl einsetzen, können Sie u.a. Code eins zu eins einsetzen; Änderungen an der Rootpage würden aber nicht zur Anzeige kommen, da diese nicht in der Tabelle "tx_realurl_pathcache" abgelegt wird. Ohne Pfad (realUrl) sind die im Code rot eingefärbten Teile zu entfernen!

 

Ein paar Konstanten müssen gesetzt werden (entw. tstamp oder SYS_LASTCHANGE):

# Feldname des Zeitstempels, nach dem selektiert werden soll
modeLC = pages.SYS_LASTCHANGED
# Feldname des Zeitstempels, nach dem selektiert werden soll (Kurzform für field =)
modeLCs = SYS_LASTCHANGED
# maximale Anzahl an Datensätzen (Seiten) in der Anzeigeliste
maxPagesLC = 10
# Anzahl Tage rückwirkend bis wann Änderungen engezeigt werden sollen
anzahlTageLC = 8
# Page-IDs (pages.uid), die nicht angezeigt werden sollen:
ExcludeFromLastModified = 166,361,439,498

 

 

und so etwas kommt dann ins Template-Setup:

###########################################
#  Die letzten Änderungen aus allen Seiten:
#
lib.lastUpdated >
lib.lastUpdated = COA
lib.lastUpdated {
   10 = TEXT
   10 {
     data = date: d.m.Y H:i
     stdWrap.wrap = <h4>Referenz-Zeitpunkt aktuell: | (= Ladezeitpunkt dieser Seite)</h4>
   }

   20 = CONTENT
   20 {
     table = tt_content
     wrap (
         <h4>Änderungen in den letzten {$anzahlTageLC} Tagen:</h4>
         <ol class="kupix_lastUpdated">|</ol>
      )
     select {
       max = {$maxPagesLC}
       languageField = sys_language_uid
       selectFields (
          tt_content.uid AS cUid,
          tt_content.pid AS cPid,
          tt_content.header AS header,
          tt_content.tstamp AS cTstamp,
          pages.title AS title,
          pages.subtitle AS subtitle,
          pages.tstamp AS pTstamp,
          pages.SYS_LASTCHANGED,
          tx_realurl_pathcache.pagepath as pfad
       )
       andWhere.data = date:U - 3600*24*{$anzahlTageLC}
       andWhere.stdWrap.wrap = {$modeLC} >= (|)
       join = pages ON (tt_content.pid = pages.uid) JOIN tx_realurl_pathcache ON (pages.uid = tx_realurl_pathcache.page_id)
       orderBy = {$modeLC} DESC
       groupBy = tt_content.pid
       pidInList.cObject = HMENU
       pidInList.cObject {
         special = list
         special.value.field = pages
         excludeUidList = {$ExcludeFromLastModified}
         1 = TMENU
         1 {
           expAll = 1
           NO {
             doNotLinkIt = 1
             stdWrap.field = uid
             stdWrap.wrap = | |*|  ,| |*|
           }
         }
         2 < .1
         2.NO.stdWrap.wrap = ,|
         3 < .2
         4 < .2
         5 < .2
         6 < .2
                     # usw. für alle verfübaren Ebenen.
       }
     }

     renderObj = COA
     renderObj {
       10 = TEXT
       10 {
         field = {$modeLCs}
         strftime = %d.%m.%y
         wrap =  <li class="midi">Am  <span class="rot">| um 
       }
       11 = TEXT
       11 {
         field = {$modeLCs}
         strftime = %H:%M
         wrap = | Uhr</span> wurde die Seite "
       }

       20 = TEXT
       20{
         field = pfad
         typolink.parameter {
           field = cPid
           stdWrap.dataWrap=|
         }
         noTrimWrap = |<strong>|</strong>" |
         if.value = {$HomePID}
         if.equals.field = cPid
         if.negate = 1
       }
       21 = TEXT
       21{
         field = pfad
         typolink.parameter {
            field = cPid
            stdWrap.wrap=|
         }
         noTrimWrap = |<strong>|</strong>" |
         if.value = {$HomePID}
         if.equals.field = cPid
       }
      
       25 = TEXT
       25{
         field = cPid
         wrap = (id=|) bearbeitet.
       }

       30 = TEXT
       30{
         field = subtitle
         noTrimWrap = |<br /><span class="_2ndrow"><em>Untertitel: </em> »|«|
         if {
            value =
            equals.field = subtitle
            negate = 1
         }
       }

       40 < .20
       40{
         field = header
         noTrimWrap = |<br /><em>Datensatz:</em> »|«</span></li>|
       }
       41 < .21
       41{
         field = header
         typolink.parameter.field >
         typolink.parameter.stdWrap.dataWrap = {$basisURL}#kk{field:cUid}
         noTrimWrap = |<br /><em>Datensatz:</em> »|«</span></li>|
       }
     }
   }
}

tt_content.menu.20.5 >
tt_content.menu.20.5 < lib.lastUpdated

 

 

Die Konstanten anzahlTageLC (hier: Änderungen in den letzten 10 Tagen) und maxPagesLC (maximal 25 Seiten anzeigen) steuern die Ausgabe. Ihr könnt Euch das Ergebnis auf unserer Seite "letzte Änd. handgemacht" ansehen.


 
Aktuelles