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)

iTunes: Ordner überwachen

itunes logoIch nutze sowohl unter Windows als auch unter OSX verschiedene Mediaplayer, darunter natürlich iTunes von Apple. Was mich aber bisher sehr geärgert hat, dass iTunes auch in der aktuellsten Version nicht in der Lage ist den Ordner mit den MP3 Dateien auf Neuzugänge zu überprüfen. Man kann nur Musikstücke zum Importieren auswählen. Falls man ein paar versteute Neuzugänge in dem Ordner hat, muss man also jeden per Hand in die iTunes Datenbank einpflegen.

Da ich regelmäßig an zwei bis drei Rechnern arbeite, halte ich den Datenbestand bei allen per Synchronisation möglichst auf gleichen Stand. Das gilt auch für meine MP3 Sammlung. Nur iTunes weiß dann immer nicht von meinen Neuzugängen. Wenn man den gesamten Ordner neu importiert, ließt iTunes auch alle vorhandenen Songs nochmals in die Datenbank ein. Hier hilft nur ein vorheriges komplettes Löschen der Datenbank, dabei verschwinden aber auch alle Statistiken und andere Informationen. Also nichts für den Alltagsgebrauch.

Genauso wenig ist eine vernünftige Funktion in iTunes vorhanden, um „tote“ Datenbankeinträge aufzufinden und zu löschen. Dies passiert mir auch immer wieder. Nicht nur aufgrund der Synchronisierung zwischen den Rechnern, sondern auch wenn ich ein externes Tool zum Taggen und Renamen von MP3 Dateien genutzt habe.

Während es für Appels OSX mit dem Tune•Instructor eine recht bekannte kostenfreie Möglichkeit gibt (bietet diese Funktion und noch einiges mehr) bin ich für Windows erstmal nicht fündig geworden.

Nach langem Suchen (zwischendurch hatte ich schon mal aufgegeben) habe ich nun eine Lösung gefunden … Trommelwirbel … :

iTunes Folder Watch for Windows

itunes folder watch symbolEs benötigt zwar das Microsoft .NET Framework 2.0 erledigt damit aber dann genau den Job, den ich bei iTunes bisher so vermisst habe und das zu meiner vollsten Zufriedenheit. So ist meine iTunes Datenbank auf allen Rechnern immer auf aktuellem Stand ohne doppelte Einträge. Für solch ein Tool sind auch die präzisen Einstellmöglichkeiten sehr gut umgesetzt:

itunes folder watch window

Angenehmerweise findet das Progamm auch toten Links in der iTunes Datenbank und löscht diese auf Wunsch. Ich muss mich jedenfalls nicht mehr dauernd über dieses eine Manko von iTunes ärgern!

Von der gleichen Autorin stammt übrigens auch das Programm iTunes Album Browser for Windows, das ich allerdings noch nicht getestet habe.

Nachtrag: Über Martins Kommentar wurde ich darauf aufmerksam gemacht, dass das Programm mittlerweile nicht mehr alle Funktionen kostenfrei anbietet. Das vollautomatische Abgleichen ist nur in der für 7,50 EUR registrierten Version möglich. Ein Abgleich ist auch kostenfrei möglich nur ist dann mehr Handarbeit angesagt und es gibt einige Nagscreens.

Martin empfiehlt als kostenfreie Alternative ein anderes Programm namens iTLU. Ich selbst habe diese Software nicht getestet.

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 …)

Mein WordPress verfällt der Ping-O-Manie

wordpress logoEigentlich sollte es ja der Vergangenheit angehören … das Problem, dass WordPress nach dem Bearbeiten alter Beiträge bereits versandte Pingbacks erneut auslöst und entsprechend verlinkte Seiten wiederholt anpingt. Das Ganze sollte seit der Version 2.1 WP-intern gelöst sein. Vorher gab es u.a. das Plugin PingFix, das dafür sorgte, dass nach dem Bearbeiten bestehender Artikel nur neue Links angepingt werden.

(mehr …)