seeseekey.net - Invictus Deus Ex Machina

Möchte man einen Serendipity Blog zu einem WordPress umziehen, muss man leider etwas Handarbeit in diesen Vorgang stecken. Die Ausgangssitutation besteht dabei aus einem frisch installierten WordPress, sowie dem Serendipity. In der WordPress-Datenbank werden im ersten Schritt einige Modifikationen vorgenommen:

TRUNCATE wp_posts;
TRUNCATE `wp_postmeta`;
TRUNCATE `wp_term_relationships`;
TRUNCATE `wp_term_taxonomy`;
TRUNCATE `wp_comments`;
TRUNCATE `wp_commentmeta`;
DELETE FROM wp_terms WHERE wp_terms.term_id!=1;

Anschließend wird der Serendipity Importer für WordPress benötigt:

git clone https://github.com/ShakataGaNai/s9y-to-wp

In diesem gibt es eine Datei namens „serendipity.php“ welche in den „wp-content/plugins/serendipity/“ Ordner kopiert wird. Nach der Aktivierung des Plugins findet man im WordPress-Backend unter „Werkzeuge > Daten importieren“ einen Serendipity Importer.

Der Serendipity Import

In den Importer werden die Verbindungsdaten der Serendipity-Datenbank eingetragen. Beim Prefix sollte bei einer Serendipity-Standardinstallation „serendipity_“ stehen. Nun kann der Import für die einzelnen Teile der Datenbank gestartet werden. Die WordPress-Datenbank benötigt im Nachgang einige Aktualisierungen:

UPDATE `wp_comments` as a SET a.`comment_post_ID`= (SELECT b.`menu_order` FROM `wp_posts` as b WHERE a.`comment_post_ID`= b.`ID`);
UPDATE `wp_term_relationships` SET `object_id`=`object_id`+9000;
UPDATE `wp_term_relationships` as a SET a.`object_id`= (SELECT b.`menu_order` FROM `wp_posts` as b WHERE a.`object_id`-9000= b.`ID`);
UPDATE `wp_posts` SET `ID`=`ID`+9000;

Die folgenden Zeilen müssen nacheinander ausgeführt werden, da sie jeweils manuell angepasst werden:

UPDATE `wp_posts` SET `ID`=`menu_order`, `guid`=CONCAT("http://example.org/?p=",`menu_order`), `menu_order`=null; -- Replace MYURL.COM with your URL
SELECT `id`+1 FROM `wp_posts` ORDER BY `id` DESC LIMIT 0,1;
ALTER TABLE `wp_posts` AUTO_INCREMENT = XXX;

Der Wert „XXX“ entspricht dabei dem Ergebnis der Abfrage (SELECT). Damit sind die Daten im WordPress gelandet und können nun nachbearbeitet (Bilder & Dateipfade) werden.

Eigentlich ist es ja ganz einfach Piwik in Serendipity zu integrieren. Einfach das von Piwik bereitgestellt Codeschnippsel in die entries.tpl kopieren und schon funktioniert das ganze. So viel zur Theorie. Das Problem an den Template Dateien von Serendipity ist die Templateengine Smarty. Diese erlaubt keine { und } Zeichen. Diese müssen mittels {ldelim} und {rdelim} maskiert werden. Aus dem Codefragment:

try {
var piwikTracker = Piwik.getTracker(pkBaseURL + „piwik.php“, 1);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}

wird dann:

try {ldelim}
var piwikTracker = Piwik.getTracker(pkBaseURL + „piwik.php“, 1);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
{rdelim} catch( err ) {ldelim}{rdelim}

Damit funktioniert das ganze auch unter Serendipity :)

Weitere Informationen gibt es unter:
http://50226.de/piwik-in-serendipity.html
http://board.s9y.org/viewtopic.php?f=10&t=15683

Wer Podcasting unter Serendipity betreiben möchte, der sollte sich das Plugin Easy Podcasting Plugin anschauen. Dieses kümmert sich dann darum, die entsprechenden Mediendateien in den RSS Feed zu integrieren oder auf Wunsch einen passenden Player auf der Seite anzuzeigen. Das Plugin kann dabei über SPARTACUS (Serendipity Plugin And Repository Tool Access Customization/Unification System) installiert werden.

Vor kurzem hatte einer meiner Leser ein Problem das er auch wenn er das Captcha richtig ausgefüllt hatte, keinen Kommentar schreiben konnte. Im Spamlog stand dann:

REJECTED: Captcha ungültig (Eingegeben: Z4RE2, Erwartet: )]

Auch wenn er nichts eingegeben hat führte das zur gleichen Meldung. Das Problem an der Sache lag allerdings an anderer Stelle. Bis auf besagten Leser konnte keiner das Problem nachvollziehen. Nachdem der Leser als Fehlerquelle ausschied, musste es also etwas anderes sein.

Nach einigen dutzend Versuchen fiel uns dann auf das er das die URL http://www.seeseekey.net anstatt http://seeseekey.net benutze, was dazu führte das der Blog den Hostnamen nicht mehr erkannt hat. Die Lösung des Problemes war so einfach wie simpel :)

In der Konfiguration von Serendipity musste die Option HTTP-Hostnamen automatisch erkennen (Autodetect HTTP host) aktiviert werden und schon gehörte das Problem der Vergangenheit an.