Datum in Beiträgen anpassen

Logo DrupalDrupal 5.x, PHP-Template basiertes Theme

Bei manchen Templates für die Anzeige der Nodes, der Datei "node.tpl.php", wird das Datum deart formatiert das es mit der Uhrzeit angezeigt wird. Nun möchte man nicht unbedingt bei der Anzeige, wann ein Beitrag erstellt wurde, auch die Uhrzeit anzeigen. Oder man möchte das Format des Datums generell ändern.

Wie geht es?

Datum in Beiträgen

Die Anzeige des Datums bei Beiträgen wird in der Datei "node.tpl.php" festgelegt. Nachfolgende Codebeispiele sind nur Ausschnitte aus einer "node.tpl.php".

Variante 1, langes Datum mit Uhrzeit

<?php if ($submitted): ?>
<span class="submitted"><?php print t('!date — !username', array('!username' => theme('username', $node), '!date' => format_date($node->created))); ?></span>
<?php endif; ?>

Variante 2, nur kurzes Datum

<?php if ($submitted): ?>
<div class="submitted"><?php print t('!date - !username', array('!username' => theme('username', $comment), '!date' => format_date($comment->timestamp, 'custom', 'd.m.y'))); ?></div>
<?php endif; ?>

Datum in Kommentaren

Die Anzeige des Datums bei Kommentaren wird in der Datei "comment.tpl.php" festgelegt. Nachfolgende Codebeispiele sind nur Ausschnitte aus einer "comment.tpl.php".

Variante 1, langes Datum mit Uhrzeit

<?php if ($submitted): ?>
<div class="submitted"><?php print t('!date — !username', array('!username' => theme('username', $comment), '!date' => format_date($comment->timestamp))); ?></div>
<?php endif; ?>

Variante 2, nur kurzes Datum

<?php if ($submitted): ?>
<div class="submitted"><?php print t('!date - !username', array('!username' => theme('username', $comment), '!date' => format_date($comment->timestamp, 'custom', 'd.m.y'))); ?></div>
<?php endif; ?>

Ich gehe nur auf das deutsche Datumsformat ein. Um in mehrsprachigen Installationen das Datum sprachtypisch anzuzeigen müsste man die aktuelle Language-Variable abfragen und die Formatierung entsprechend des Variableninhaltes realisieren.

Datum in Suchergebnissen

Hierbei beziehe ich mich auf die Standardsuche von Drupal.

Um bei den einzelnen Suchergebnissen das angezeigte Datum zu formatieren sollte man mit einem Template arbeiten. Die Änderung im Modulcode selbst ist zwar die schnellere Lüsung aber nicht die saubere.

Im Modul "search.module" wird auf der Basis der Funktion theme_search_item() das Template erstellt in dem die Datumsanzeige formatiert wird.

Schritt 1, die Datei "template.php" erweitern

Als Voraussetzung für das Template selbst folgenden Code einfügen:

/**
* Format a single result entry of a search query. This function is normally
* called by theme_search_page() or hook_search_page().
*/
function phptemplate_search_item($item, $type) {
return _phptemplate_callback('search_item', array('item' => $item, 'type' => $type));
}

Sollte die Datei "template.php" nicht existieren wird sie einfach neu angelegt. Dabei beachten, daß es sich um eine Datei mit PHP-Code handelt.

Schritt 2, die Template-Datei erstellen

Die Template-Datei selbst ist "search_item.tpl.php". Sie wird im gleichen Ordner wie die Datei "template.php" gespeichert.
Im nachfolgenden Code für die Template-Datei "search_item.tpl.php" ist bereits ein kurzes Datum ohne Uhrzeit formatiert:

<?php /* $Id: search_item.tpl.php, v 1.0 2007/05/04 quiptime Exp $ */

$output = '';
$output = ' <dt class="title"><a href="'. check_url($item['link']) .'">'. check_plain($item['title']) .'</a></dt>';
$info = array();
if ($item['type']) {
$info[] = $item['type'];
}
if ($item['user']) {
$info[] = $item['user'];
}
if ($item['date']) {
$info[] = format_date($item['date'], 'custom', 'd.m.y');
}
if (is_array($item['extra'])) {
$info = array_merge($info, $item['extra']);
}
$output .= ' <dd>'. ($item['snippet'] ? '<p>'. $item['snippet'] . '</p>' : '') . '<p class="search-info">' . implode(' - ', $info) .'</p></dd>';
print $output;

?>

Die Formatierung des Datums

$info[] = format_date($item['date'], 'custom', 'd.m.y');

erfolgt analog der Beispeile bei den Beiträgen und Kommentaren.

Angehangene Datei

Die Template-Datei habe ich diesem Beitrag als Datei angehangen. Die Endung ".txt" muß logischer Weise entfernt werden.

Links

Drupal API, format_date

AnhangGröße
search_item.tpl.php680 Bytes
Powered by Drupal. Created with ZenWalk.