Drupal 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?
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".
<?php if ($submitted): ?>
<span class="submitted"><?php print t('!date — !username', array('!username' => theme('username', $node), '!date' => format_date($node->created))); ?></span>
<?php endif; ?>
<?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; ?>
Die Anzeige des Datums bei Kommentaren wird in der Datei "comment.tpl.php" festgelegt. Nachfolgende Codebeispiele sind nur Ausschnitte aus einer "comment.tpl.php".
<?php if ($submitted): ?>
<div class="submitted"><?php print t('!date — !username', array('!username' => theme('username', $comment), '!date' => format_date($comment->timestamp))); ?></div>
<?php endif; ?>
<?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.
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.
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.
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.
Die Template-Datei habe ich diesem Beitrag als Datei angehangen. Die Endung ".txt" muß logischer Weise entfernt werden.
Anhang | Größe |
---|---|
search_item.tpl.php [2] | 680 Bytes |
Links:
[1] http://api.drupal.org/api/5/function/format_date
[2] http://blog.quiptime.com/files/search_item.tpl.php.txt