News Datum in Contao formatieren

Das Datumsformat einer Contao Website lässt sich generell über die Systemeinstellungen anpassen - doch auch die Formatierung über die einzelnen Templates ist möglich. Wir zeigen wie.

Datum in Contao modifizieren Theme

Datumsänderung in den Contao Systemeinstellungen

Nach der Installation von Contao ist das Datumsformat default auf das amerikanische Format mit führendem Monat eingestellt, also "Monat Tag Jahr". Die Einstellung finden wir im Contao Backend unter dem Punkt System -> Einstellungen -> Datum und Zeit.
Frisch installiert sieht die Angabe in Contao wie folgt aus: m.d.Y

Um auf das in Deutschland typische Format umzustellen, müssen wir "d" und "m" in der Reihenfolge tauschen. Demnach steht das "d" für den Tag und das "m" für den Monat. Zuletzt steht das "Y" für das ausgeschriebene volle Jahr, also "2016". Würden wir dieses gegen ein kleines "y" ersetzen, bekämen wir nur die letzten zwei Stellen vom Jahr angezeigt,also "16".

PHP Kommandos zur Datumsformatierung

Die einzelnen Kommandos zur Formatierung sind auf php.net unter dem Stichwort: date sehr ausführlich beschrieben: http://php.net/manual/de/function.date.php

Zwischen die einzelnen Kommandos können wir auch Trennzeichen einstellen. So wäre in Deutschland der Punkt als Trennung typisch. Daraus ergibt sich: d.m.Y = 28.06.2016 und d-m-Y = 28-06-2016.
Als Trennung können wir alle Zeichen verwenden, die nicht als Kommando aufgelistet sind.

In den meisten Fällen werden wir die Formatierungskommandos für Tag, Monat und Jahr verwenden. Also "d" für Tag, "m" für Monat und "Y" für die Jahreszahl.

Einschränkung der Formatierung in der Systemeinstellung

Die Monate können wir von PHP bereits mit Ihrer namentlichen Bezeichnung ausgeben lassen.
Allerdings wird die Ausgabe von Monatsnamen/-bezeichnungen in der Regel in englisch sein. Zwar gibt es Möglichkeiten das Datum von PHP Seite in Deutsch darstellen zu lassen, dazu wird aber ggf. Zugriff auf die Installation von PHP benötigt, was wahrscheinlich eher selten der Fall sein dürfte. Als Stichwort sei die PHP Funktion "strftime" in Zusammenspiel mit " setlocale()" erwähnt.

Des Weiteren ist zu beachten, dass Contao das Kommando "F" für die Ausgabe der Monatsnamen nicht verträgt. Hier scheitert die Funktion: Validator::isDate beim Überprüfen auf ein gültiges Datum. Das bedeutet, dass wir diese Art der Formatkommandos nicht unter den Systemeinstellungen verwenden sollten. Allerdings können wir diese in den Templates verwenden, dazu gleich mehr.

Datumsänderung in den Contao Templates

Flexibler sind wir, wenn wir das Datum direkt im Template mit PHP formatieren. Mitunter benötigen wir auch unterschiedliche Darstellungen des Datums innerhalb einer Website. Zum Beispiel eine verkürzte Darstellung des Datums in den News-Teasern und die volle Ausgabe in den einzelnen News-Beiträgen. Dazu müssen wir dann die entsprechenden News-Template überschreiben.

Ausführlichere Infos über die generellen Möglichkeiten der Template-Modifizierung in Contao haben wir hier beschrieben.

Für eine Nachrichten-Teaser-Liste benutzen wir in der Regel das Template "news_latest".
Dazu überschreiben wir das Template. Hierzu navigieren wir uns in Contao zur Template Verwaltung unter Layout -> Templates und wählen dort "Neues Template". Als Vorlage verwenden wir in unserem Fall das Template "news_latest". Nach dem Speichern öffnen wir das Template erneut und vergeben einen neuen Namen. Dabei sollte das "news_" erhalten bleiben, damit die Newsmodule das neue Template zur Auswahl anzeigen.

Anschließend öffnen wir das Template im Editor und finden dort folgende Zeile:

<p class="info">
	<time datetime="<?= $this->datetime ?>">
	<?= $this->date ?></time> 
	<?= $this->author ?> 
	<?= $this->commentCount ?>
</p>

Für uns interessant ist "$this->date". Hier gibt Contao das Datum in der vom System vorgebenden Darstellung aus.
Damit wir unser eigenes Format anzeigen können benötigen wir das Datum als Unix Timestamp. Dieses wird von Contao in der Variablen "$this->time" ausgegeben. Um jetzt das Datum nach unseren Wünschen zu modifizieren, benutzen wir die Variable "time" und setzen diese in die PHP Funktion "date" wie folgt ein:

date("d F Y",$this->tstamp)

Als Formatstring geben wir "d" für den Tag als Zahl, "F" für den ausgeschriebenen Monatsnamen und "Y" für das vollständige Jahr ein. Wir möchten diese Ausgabe erreichen: "27. Dezember 2015".

Damit sieht unser Script wie folgt aus: 

<p class="info">
	<time datetime="<?= $this->datetime ?>">
	<?= date("d F Y",$this->tstamp) ?></time> 
	<?= $this->author ?> 
	<?= $this->commentCount ?>
</p>

Damit erreichen wir leider noch nicht ganz die Ausgabe, die wir erreichen wollten, da der Monatsname in der englischen Schreibweise erscheint: "27 December 2015".

Wie bereits weiter oben erwähnt, könnten wir mit Hilfe von verschiedenen PHP Funktionen nun das Datum entsprechend formatieren lassen. Da aber ggf. das erforderliche Language Pack auf unserem Server nicht installiert ist und oder wir keinen Zugriff auf die Installation haben, ist es ggf. schneller wenn wir es selbst formatieren.

Als erstes legen wir dazu ein Array mit den deutschen Bezeichnungen der Monate an. Anschließend zerlegen wir das Datum in seine Einzelteile und lassen uns Tag, Monat und Jahr einzeln in Variablen setzen. Da unser Array bei 0 anfängt zu zählen, ist es wichtig, dass wir beim Monat eine 1 abziehen. Zuletzt setzen wir das Datum in einer Variablen wieder zusammen:

<?php
		$Monate = array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
		$Tag = date("d",$this->time);
		$Monat = date("n",$this->time)-1;
		$Jahr = date("Y",$this->time);
		$theDatum = $Tag.".".$Monate[$Monat]." ".$Jahr;
?>

Die ursprüngliche Code Zeile sieht dann wie folgt aus:

<p class="info">
	<time datetime="<?= $this->datetime ?>">
	<?= $theDatum ?></time> 
	<?= $this->author ?> 
	<?= $this->commentCount ?>
</p>

Das Array fügen wir über dieser modifizierten Code Zeile direkt im Template ein. Damit erzielen wir nun auch unsere gewünschte Ausgabe: "27. Dezember 2015".

Um nun auch das Datum in den einzelnen News-Beiträgen zu ändern, gehen wir ebenso vor. Wir verwenden in der Regel das Template "news_full" um Einzelbeiträge auszugeben. Sobald wir dieses unter Layout -> Templates -> Neues Template erstellt und umbenannt haben, können wir es auf die gleiche Weise formatieren.

zur Blogübersicht

Online Website Check

Einzelne Webseiten in wenigen Sekunden auf Fehler überprüfen, Optimierungspotenziale herausfinden und direkt verbessern. Kostenlos und anonym mit unserem Website Check Tools.

Hilfe & Support

Sie haben eine Contao Website und benötigen professionelle Unterstützung für Ihr Projekt im Bereich Webdesign, Programmierung, Software oder Online Marketing? Nehmen Sie Kontakt zu uns auf, wir freuen uns auf Sie.  

Cookie- & Analyse Einstellungen

Voreingestellt sind ausschließlich zulässige Cookies, für die keine Einwilligung benötigt wird. Analyse und Tracking, sowie weiteren funktionellen Cookies, können Sie unter "Mehr" durch Anwählen von "Ja" zustimmen.
Weitere Infos zu Cookies und Ihrem Datenschutz stellen wir Ihnen in der Datenschutzerklärung vor.

Verweigern
Akzeptieren
Mehr