Contao-News

Wir informieren Dich hier regelmäßig zu Updates, stellen Best-Practice-Arbeiten vor und berichten über Aktuelles aus dem Contaoversum.

Individuelle Darstellung von Datum und Uhrzeit bei Nachrichten

von Thomas Weitzel – Aus der Praxis

Wirken sich die Einstellungen innerhalb des Seitentyps „Startpunkt einer Webseite“ und in den Einstellungen auf die Ausgabe von Datum und Uhrzeit global aus, so lassen sich durch angepasste Templates die Ausgabe und Darstellung individueller gestalten. Dies lässt sich am einfachsten – und updatesicher! – durch die Erstellung von angepassten Templates für die Ausgabe erreichen.

Als Beispiel für die Darstellung von Nachrichten aus einem Nachrichten-Archiv dient ein Modul vom Typ „Nachrichtenliste“ mit dem Template „news_latest“ sowie dem Modul „Nachrichtenleser“ mit dem Template „news_full“ (Code hier anhand des Templates "news_latest" dargestellt).

Entscheidend innerhalb des Templates (Contao 2.11.2) ist diese Stelle:

Standardtemplates ansehen

Template „news_latest.html5“:

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

Template „news_latest.xhtml“:

<p class="info">
<?php echo $this->date; ?> <?php echo $this->author; ?> <?php echo $this->commentCount; ?>
</p>

$this->date gibt das Datum und die Uhrzeit der (gespeicherten) Nachricht aus. Diese Funktion liefert immer Datum UND Uhrzeit aus; eine getrennte Ausgabe von Datum ODER Uhrzeit oder nur eine der Angaben erreicht man durch die Anpassung der Ausgabe-Templates für die Nachrichten.

Standardtemplates anpassen: 1. Schritt

Über folgende Anpassung innerhalb des Templates kann die Ausgabe des Datums und der Uhrzeit anhand der date-Funktion (weiterführender Link: PHP Date-Funktion) nun unterschiedlich definiert werden:

Template „news_latest.html5“:

<p class="info">
<time datetime="<?php echo $this->datetime; ?>">
<?php echo $this->parseDate("d. F Y", $this->timestamp); ?></time>
<?php echo $this->author; ?> <?php echo $this->commentCount; ?>
</p>

Template „news_latest.xhtml“:

<p class="info">
<?php echo $this->parseDate("d. F Y", $this->timestamp); ?>
<?php echo $this->author; ?> <?php echo $this->commentCount; ?>
</p>

Ausgabe: 09. Mai 2012

Standardtemplates anpassen: Nachrichtentitel und Datum einzeilig

Es lassen sich verschiedene Kombinationen und Darstellungen erzeugen. So lässt sich das Datum hinter dem Nachrichtentitel ausgeben, wenn man das Ausgabe-Template wie folgt abändert:

Template „news_latest.html5“:

<h2>
<?php echo $this->newsHeadline; ?> | <time datetime="<?php echo $this->datetime; ?>"
><?php echo $this->parseDate("d. F Y", $this->timestamp); ?></time>
</h2>

Template „news_latest.xhtml“:

<h2>
<?php echo $this->newsHeadline; ?> | <?php echo $this->parseDate("d.m.Y",
$this->timestamp); ?>
</h2>

Ausgabe: 2. Contao Konferenz 2012 | 23.01.2012

Standardtemplates anpassen: Nachrichtentitel und Datum einzeilig, getrennt

So lässt sich das Datum hinter dem Nachrichtentitel – mit einer eigenen Klasse für eine andere Darstellung – ausgeben, wenn man das Ausgabe-Template wie folgt abändert:

Template „news_latest.html5“:

<h2>
<?php echo $this->newsHeadline; ?> | <span class="datum">
<time datetime="<?php echo $this->datetime; ?>">
<?php echo $this->parseDate("d. F Y", $this->timestamp); ?></time>
</span>
</h2>

Template „news_latest.xhtml“:


<h2>
<?php echo $this->newsHeadline; ?> | <span class="datum">
<?php echo $this->parseDate("d.m.Y", $this->timestamp); ?>
</span>
</h2>

Ausgabe: 2. Contao Konferenz 2012 | 23. Mai 2012

Standardtemplates anpassen: Darstellung von Tag und Monat wie Kalenderblatt

Wenn die Darstellung weit mehr abweichen soll und die Bestandteile des Datum in den Tag und den Monat aufgeteilt werden, dann lässt sich das durch die Änderung des Aufgabe-Templates erreichen:

Template „news_latest.html5“:

<p class="info"><time datetime="<?php echo $this->datetime; ?>">
<span class="day"><?php echo $this->parseDate("d", $this->timestamp); ?></span>
<span class="month"><?php echo $this->parseDate("M", $this->timestamp); ?></span>
</time> <?php echo $this->author; ?> <?php echo $this->commentCount; ?></p>

Template „news_latest.xhtml“:

<p class="info">
<span class="day"><?php echo $this->parseDate("d", $this->timestamp); ?></span>
<span class="month"><?php echo $this->parseDate("M", $this->timestamp); ?>
</span>
<?php echo $this->author; ?> <?php echo $this->commentCount; ?></p>

Schematische Darstellung:

schematische Darstellung - Nachrichtenausgabe

Beispielhafte Umsetzung:

beispielhafte Darstellung - Nachrichtenausgabe

CSS-Definitionen:

Folgende CSS-Definitionen wurde für das oben gezeigte Beispiel gewählt:

.mod_newslist p.info
{
width:60px;
height:60px;
float:left;
text-align:center;
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px;
-moz-box-shadow:0 2px 8px #444;
-webkit-box-shadow:0 2px 8px #444;
box-shadow:0 2px 8px #444;
background: rgb(204,204,204);
background: -moz-linear-gradient(top, rgba(204,204,204,1) 0%, rgba(244,247,247,1) 34%, rgba(255,255,255,1) 63%, rgba(204,204,204,1) 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(204,204,204,1)), color-stop(34%,rgba(244,247,247,1)), color-stop(63%,rgba(255,255,255,1)), color-stop(100%,rgba(204,204,204,1)));
background: -webkit-linear-gradient(top, rgba(204,204,204,1) 0%,rgba(244,247,247,1) 34%,rgba(255,255,255,1) 63%,rgba(204,204,204,1) 100%);
background: -o-linear-gradient(top, rgba(204,204,204,1) 0%,rgba(244,247,247,1) 34%,rgba(255,255,255,1) 63%,rgba(204,204,204,1) 100%);
background: -ms-linear-gradient(top, rgba(204,204,204,1) 0%,rgba(244,247,247,1) 34%,rgba(255,255,255,1) 63%,rgba(204,204,204,1) 100%);
background: linear-gradient(top, rgba(204,204,204,1) 0%,rgba(244,247,247,1) 34%,rgba(255,255,255,1) 63%,rgba(204,204,204,1) 100%);filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cccccc', endColorstr='#cccccc',GradientType=0 );
}
.mod_newslist .day
{
display:block;
margin:0;
padding:5px 0 0 0;
font-size:2em;
color:#EC6E04;
}
.mod_newslist .month
{
top:-10px;
position:relative;
margin:0;
padding:0;
font-weight:bold;
font-size:.75em;
color:#444;
letter-spacing:.3em;
}

Die folgenden CSS-Definitionen sind angepasst für diese spezielle Seitenlayout; passen Sie diese Klassen individuell an Ihr Seitenlayout / Design an.

.mod_newslist h2
{
margin:0 0 0 70px !important; }
.mod_newslist p.more
{
margin:0 0 0 70px !important;
}
.mod_newslist .layout_latest
{
margin:0 0 10px 0;
padding:0 0 5px 0;
}

Ergänzender Tipp:

Für den Verlauf kommt CSS3 zum Einsatz. Solange sich die Definitionen für die verschiedenen Browser noch nicht vereinheitlicht schreiben lassen, verwendet man am besten einen Gradient (Verlaufs)-Generator dafür → www.colorzilla.com/gradient-editor

Feinschliff

Haben Sie die Templates in ihrem Originalnamen belassen, sind diese mit dem Nachrichtenlisten und - lesermodul verknüpft. Wenn Sie die Templates auch im Namen angepasst haben ( z. B. „news_latest_startseite.html5" ), so verknüpfen Sie die Templates dann in den entsprechenden Modulen und wählen das entsprechende Template aus.

Nach dem Ändern der Templates löschen Sie den Contao-internen Cache unter -> Benutzerfunktionen -> Persönliche Daten -> Cache leeren. Und öffnen die Systemwartung und löschen alle Einträge.

Fazit: Die Flexibilität hinsichtlich der Ausgabe lässt sich auch bei den Nachrichtenlisten und -leser-Modulen erreichen. So können Sie zahlreiche, unterschiedliche – an Ihre Bedürfnisse angepasst Templates – erstellen.

Alle News anzeigen

Kommentare

Kommentar von Stefan Tatschner |

Sehr schönes Tutorial! Danke dafür.

Kommentar von Patrick |

Vielen vielen Dank für dieses Tut, echt genial wie einfach das ist. Danke Dir vielmals!

Kommentar von Leolux |

Vielen Dank für das Tutorial. Es ist sehr gut nachzuvollziehen und somit sehr hilfreich.

Kommentar von Daniel |

Genau sowas hatte ich immer gesucht, perfekt.

Danke
Dani

Kommentar von G.H. Weber |

Wie schon so oft, ein verständliches Tutorial mit Pfiff bis ins Detail.
Danke

Kommentar von Steffen Winde |

Falls jemand eine Lösung für Events sucht: https://community.contao.org/de/showthread.php?45127-Eventdatum-nur-als-d-m-anzeigen-Modifikation-zeigt-nur-noch-heutigen-Tag-an&highlight=Individuelle+Darstellung+Datum+Uhrzeit+Nachrichten

Einen Kommentar schreiben

Bitte rechnen Sie 8 plus 5.