TYPO3: Letztes Änderungsdatum eines gesamten TYPO3 Systems ausgeben

Hier mal wieder ein kleines Script um ein Problem zu lösen, welches durchaus häufiger mal auftreten könnte. Auf vielen Seiten sind wir dazu angehalten, dass letzte Änderungsdatum einzelner Seiten (pages) oder deren Erstellungsdatum anzuzeigen.
Die Lösung für die Anzeige des letzten Änderungsdatums oder Erstellungsdatums ist dabei ganz einfach per folgendem Typoscript lösbar:

lib.tstamps = COA
lib.tstamps {
        # Erstellungsdatum per crdate
	10 = TEXT
	10 {
		noTrimWrap = |Erstellt am: |<br />| 
		data = page:crdate
		strftime = %d.%m.%Y
	}
	
        # Letztes Änderungsdatum per SYS_LASTCHANGED
	20 = TEXT
	20 {
		noTrimWrap = |Zuletzt geändert am: || 
		data = page:SYS_LASTCHANGED
		strftime = %d.%m.%Y	
	}
}

Das SYS_LASTCHANGED beinhaltet auch das letzte Änderungsdatum von tt_content Elementen auf einer Seite und ist somit abgesehen von Extension Datensätzen eine sehr nützliche Sache.

Was jedoch wenn man das letzte Änderungsdatum eines ganzen TYPO3 Systems ausgeben möchte?

Um sich das letzte Änderungsdatum aller Seiten anzeigen zu lassen muss man auf einer eigene „User Function“ bzw. „userFunc“ zurückgreifen (oder kennt ihr eine andere Lösung?). Die benötigte User Function ist relativ simpel und liest ganz einfach den tstamp aller pages, tt_content Element und beliebigen anderen Tabellen aus und gibt den höchsten zurück.

Eine solche User Function könnte beispielsweise so aussehen (inkl. Änderungsdatum von tx_news Datensätzen)

lastChanged.php

<?php
	/**
	 * Sucht in pages, tt_content und tt_news nach dem letzten Änderungsdatum und gibt anschließend das letzte Änderungsdatum aus
	 */
	class user_lastChanged{

		var $cObj;
		
		/**
		 * Gibts letztes Änderungsdatum zurück
		 * @return \string Formatierter Text mit letzten Änderungsdatum
		 */		
		function main($content,$conf) {
			$res1 = $GLOBALS['TYPO3_DB']->exec_SELECTquery('SYS_LASTCHANGED','pages','','','SYS_LASTCHANGED DESC','1');
			$res2 = $GLOBALS['TYPO3_DB']->exec_SELECTquery('tstamp','tx_news_domain_model_news','','','tstamp DESC','1');
			$res3 = $GLOBALS['TYPO3_DB']->exec_SELECTquery('tstamp','tt_content','','','tstamp DESC','1');
			
			$datum1 = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res1);
			$datum2 = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res2);
			$datum3 = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res3);
			
			return "Zuletzt geändert am: " . date("d.m.Y", max($datum1['tstamp'], $datum2['tstamp'], $datum3['tstamp']));;
		}
	}
?>

Anschließend einfach im Typoscript die Funktion einbinden und an beliebiger Stelle aufrufen:

# Einbinden
# !!! PFAD ANPASSEN !!!
includeLibs.lastChanged = fileadmin/pfad/zu/lastChanged.php

# Aufrufen
lib.sys-lastchanged = USER
lib.sys-lastchanged {
   userFunc = user_lastChanged->main
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Highlighting von Codes ist mit den Tags  [ts], [php], [html], [javascript], [xml] oder [code] möglich.