seeseekey.net - Invictus Deus Ex Machina

Möchte man einen Seren­di­pity Blog zu einem Word­Press umzie­hen, muss man lei­der etwas Hand­ar­beit in die­sen Vor­gang ste­cken. Die Aus­gangs­si­tu­ta­tion besteht dabei aus einem frisch instal­lier­ten Word­Press, sowie dem Seren­di­pity. In der WordPress-Datenbank wer­den im ers­ten Schritt einige Modi­fi­ka­tio­nen 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 Seren­di­pity Impor­ter für Word­Press benötigt:

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

In die­sem gibt es eine Datei namens „serendipity.php“ wel­che in den „wp-content/plugins/serendipity/“ Ord­ner kopiert wird. Nach der Akti­vie­rung des Plugins fin­det man im WordPress-Backend unter „Werk­zeuge > Daten impor­tie­ren“ einen Seren­di­pity Importer.

Der Seren­di­pity Import

In den Impor­ter wer­den die Ver­bin­dungs­da­ten der Serendipity-Datenbank ein­ge­tra­gen. Beim Pre­fix sollte bei einer Serendipity-Standardinstallation „serendipity_“ ste­hen. Nun kann der Import für die ein­zel­nen Teile der Daten­bank gestar­tet wer­den. Die WordPress-Datenbank benö­tigt im Nach­gang 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 fol­gen­den Zei­len müs­sen nach­ein­an­der aus­ge­führt wer­den, da sie jeweils manu­ell ange­passt 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“ ent­spricht dabei dem Ergeb­nis der Abfrage (SELECT). Damit sind die Daten im Word­Press gelan­det und kön­nen nun nach­be­ar­bei­tet (Bil­der & Datei­p­fade) werden.

Eigent­lich ist es ja ganz ein­fach Piwik in Seren­di­pity zu inte­grie­ren. Ein­fach das von Piwik bereit­ge­stellt Code­schnipp­sel in die entries.tpl kopie­ren und schon funk­tio­niert das ganze. So viel zur Theo­rie. Das Pro­blem an den Tem­plate Dateien von Seren­di­pity ist die Tem­pla­teen­gine Smarty. Diese erlaubt keine { und } Zei­chen. Diese müs­sen mit­tels {ldelim} und {rdelim} mas­kiert wer­den. Aus dem Code­frag­ment:

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

wird dann:

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

Damit funk­tio­niert das ganze auch unter Seren­di­pity :)

Wei­tere Infor­ma­tio­nen gibt es unter:
http://50226.de/piwik-in-serendipity.html
http://board.s9y.org/viewtopic.php?f=10&t=15683

Wer Pod­cas­ting unter Seren­di­pity betrei­ben möchte, der sollte sich das Plu­gin Easy Pod­cas­ting Plu­gin anschauen. Die­ses küm­mert sich dann darum, die ent­spre­chen­den Medi­en­da­teien in den RSS Feed zu inte­grie­ren oder auf Wunsch einen pas­sen­den Player auf der Seite anzu­zei­gen. Das Plu­gin kann dabei über SPARTACUS (Seren­di­pity Plu­gin And Repo­sitory Tool Access Customization/Unification Sys­tem) instal­liert werden.

Der Blog wurde auf die neue Ver­sion 1.5.4 von Seren­di­pity aktua­li­siert. Wie immer lief das Update pro­blem­los ab. Ein­fach rüber­ko­pie­ren, den Blog auf­ru­fen und schon läuft wie­der alles :-)

Die neue Ver­sion behebt unter ande­rem einige Lücken wel­che XSS ermög­lich­ten, sowie einige Pro­bleme mit bestimm­ten Daten­ban­ken und PHP Ver­sio­nen. Seren­di­pity ist unter http://s9y.org zu finden.

Vor kur­zem hatte einer mei­ner Leser ein Pro­blem das er auch wenn er das Capt­cha rich­tig aus­ge­füllt hatte, kei­nen Kom­men­tar schrei­ben konnte. Im Spam­log stand dann:

REJECTED: Capt­cha ungül­tig (Ein­ge­ge­ben: Z4RE2, Erwartet: )]

Auch wenn er nichts ein­ge­ge­ben hat führte das zur glei­chen Mel­dung. Das Pro­blem an der Sache lag aller­dings an ande­rer Stelle. Bis auf besag­ten Leser konnte kei­ner das Pro­blem nach­voll­zie­hen. Nach­dem der Leser als Feh­ler­quelle aus­schied, musste es also etwas ande­res sein.

Nach eini­gen dut­zend Ver­su­chen 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 Host­na­men nicht mehr erkannt hat. Die Lösung des Pro­ble­mes war so ein­fach wie sim­pel :)

In der Kon­fi­gu­ra­tion von Seren­di­pity musste die Option HTTP-Hostnamen auto­ma­tisch erken­nen (Auto­detect HTTP host) akti­viert wer­den und schon gehörte das Pro­blem der Ver­gan­gen­heit an.