Seite auswählen

Drupal Datenbankfehler: Invalid argument and implode()

So, nun konnte ich noch kurz vor dem Jahreswechsel ein Problem erfolgreich lösen 🙂 . Da ich erstmal stark mit der Einrichtung von Drupal und dem Import der alten WordPress Blogbeiträge beschäftig war, habe ich mich zunächst um eine immer wiederkehrende Fehlermeldung nicht gekümmert.

Ich kann neue Inhalte problemlos erzeugen, aber jedes Mal, wenn ein bereits veröffentlicher Beitrag editiert, kommentiert oder der Kommentar editiert wird, erscheint folgende Fehlermeldung in einem rot hinterlegten Kasten über dem Beitragstext: (mehr …)

Drupal Kommentare: Das „(nicht überprüft)“ entfernen

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)

Drupal: Probleme mit der Weiterleitung

Umleitung: testIch möchte demnächst alle früheren Beiträge von meiner alten Drupalinstallation unter nsah.de und aus meinem alten WordPress-Blog unter nsah.de hier veröffentlichen. Damit Suchmaschinen und Besucher nicht im Leeren landen will ich diese auf die entsprechenden Seiten in meinem neuen Blog umleiten.

Falls man von einer Drupal Installation aus weiterleiten will, so ist dies auch mittels des Path Redirect Moduls möglich (Danke für den Hinweis Steffen). Hier können nicht nur interne sondern auch externe Weiterleitungen eingerichtet werden. Aber aufgepasst: die Weiterleitung tritt erst in Kraft, wenn unter der ursprünglichen URL keine Inhalte verfügbar sind. D.h. dass der alte Beitrag in der alten Drupalinstallation gelöscht werden muss, sonst wird das Path Redirect Modul nicht aktiv.

Da ich unabhängig von Modulen umleiten will, so dass ich ggf. auch das alte CMS komplett löschen kann ohne die Weiterleitungen zu verlieren und ich zusätzlich Beiträge aus meinem alten WordPress Blog in diesen Blog umziehen lassen will, kommt für mich nur eine Lösung über die .htaccess Datei in Frage. (mehr …)

Migration: Inhalte von WordPress nach Drupal transferieren

Drupal LogoIch habe schon mal begonnen mich nach den Möglichkeiten des Drupal-Imports meiner früheren Blogbeiträge unter WordPress umzusehen. Leider sieht es nicht so rosig aus wie ich es gehofft hatte. In Drupal selbst gibt es keine solche Importfunktion.

WordPress LogoAls Lösungsmöglichkeiten habe ich zunächst Hinweise auf das wp2drupal Modul gefunden. Leider ist das Modul schon etwas angegraut und wohl nur für Drupal 4.7 verfügbar. Direkt auf Drupal.org gibt es einen Thread zu dem Modul in dem viele Benutzer ihre Erfahrungen wiedergegeben haben: WordPress to Drupal migration module released. Danach hat jemand das alte Modul gepatched, so dass es auch mit Drupal 5.x funktioniert. Merkwürdigerweise habe ich in dem Thread kein funktionierenden Downloadlink zu dem angepassten Modul gefunden.

(mehr …)