Deutsches Datumsformat mit PHx in MODx

von Thomas Jakobi am Montag, 5. November 2007 um 14:02 Uhr.

Leider gab es – auch mit entsprechender setlocale Einstellung in der Sprachdatei – auf dem Shared Hosting Server meines Providers keine zuverlässige deutsche Datumsausgabe in MODx. Dies liegt eventuell daran dass der Befehl setlocale ist nicht threadfest ist – d.h. auf einem Shared-Hosting-Server kann die Einstellung von jedem einzelnen Benutzer dieses Servers anders eingestellt werden und die bisherige Einstellung damit überschrieben werden.

Somit muss der setlocale-Befehl möglichst zeitnah vor der Datumsausgabe aufgerufen werden. Dies lässt sich mit einem passenden Modifier in PHx lösen.

Voraussetzungen

Folgende Plugins/Snippets müssen installiert und funktionsfähig sein:

PHx

Es wird folgende Datei im Verzeichnis assets/plugins/phx/modifiers angelegt:

date_ger.phx.php
<?php
/*
 * description: returns german date
 * usage: [+string:date_ger=`format`+]
 */
$format = (strlen($options) > 0) ? $options : '%A, %e. %B %Y';
setlocale(LC_TIME, 'de_DE.UTF-8');
$date_ger = strftime($format, 0 + $output);
return $date_ger;

Im Seiten-Quelltext werden nun alle Datumsausgaben mit folgendem PHx-Code formatiert und die Monate/Wochentage werden in Deutsch ausgegeben:

[[+<em>datum</em>:date_ger=`<em>format</em>`]]

* Den Formatstring und die zu ändernde Variable nicht vergessen.

Hierbei ist es nicht möglich die Ditto Variable 'date' per PHx zu bearbeiten. Deshalb muss man auf jeden Fall im Template-Chunk mit dem passenden Datumsfeld arbeiten z.B.:

[[+createdon:date_ger=`%a., %e. %B %Y um %H:%M Uhr`]]

Auf mehrsprachigen Seiten lässt sich mit dieser Methode das Datum auch für jede Sprache anders formatieren. Dazu muss jeweils ein anderer Modifier für die jeweilige Sprache angelegt werden.

Viel Erfolg

Bislang habe ich folgende PHx Modifier veröffentlicht: