Seite auswählen

In den meisten Blogs kann man als Besucher auch ohne Anmeldung kommentieren. Das lässt sich auch in Drupal einstellen. Leider wird dann automatisch hinter dem Namen eines jeden nicht registrierten Besuchers der Zusatz „(nicht überprüft)“ angezeigt. Dies erscheint sogar in der Liste der letzten Kommentatoren in der Sidebar. Das sieht weder schön aus, noch erscheint es anderweitig sinnvoll …. also weg damit.

Leider gibt es dafür in der Drupal Administration keinen Schalter. Man muss in das Theme eingreifen. Nach kurzer Suche fand ich folgende Lösung:

In die template.php des genutzten Themes fügt man folgenden Code ein


uid && $object->name) {
// Shorten the name when it is too long or it will break many tables.
if (drupal_strlen($object->name) > 20) {
$name = drupal_substr($object->name, 0, 15) .'...';
}
else {
$name = $object->name;
}

if (user_access('access user profiles')) {
$output = l($name, 'user/'. $object->uid, array('title' => t('View user profile.')));
}
else {
$output = check_plain($name);
}
}
else if ($object->name) {
// Sometimes modules display content composed by people who are
// not registered members of the site (e.g. mailing list or news
// aggregator modules). This clause enables modules to display
// the true author of the content.
if ($object->homepage) {
$output = l($object->name, $object->homepage);
}
else {
$output = check_plain($object->name);
}

//$output .= ' ('. t('not verified') .')';
}
else {
$output = variable_get('anonymous', t('Anonymous'));
}

return $output;
}
?>

Das wirkt auf den ersten Blick recht umständlich, ist aber die empfehlenswerteste Vorgehensweise bei solchen Veränderungen. Es bedeutet nichts anderes als das die drupalinterne username Funktion mit der o.g. überschrieben wird. Einziger Unterschied zur originalen Version ist das auskommentierte

$output .= ' ('. t('not verified') .')';.

Warum nicht gleich die originale username Funktion verändern anstatt diese überschreiben zu lassen? Weil man

  1. nach Möglichkeit die Core Daten im Originalzustand belassen sollte, um einerseits später schwer aufzufindende Probleme zu vermeiden und
  2. es ein Update von Drupal leichter macht, weil man nicht nach jedem Update diese Änderung erneut vornehmen muss.

Hinweis für Nutzer des YAML für Drupal Themes: Falls man ein Subtheme nutzt, so muss diese Änderung in die template.php im Ordner für das Subtheme eingetragen werden, sonst funktioniert es nicht.

(via Matt Farina)