Das ganz normale Chaos, täglich frisch auf den Tisch. Direkt aus der hintersten Provinz in die Metropolen von Groß-Blogistan.


  1. Kommentare, Ubuntu php5 und xsl
  1. Kommentare, Ubuntu php5 und xsl

    Fri, 11 Jan 2008 10:34:10 GMT

    So, bei mir auf dem heimischen Rechner funktionieren nun die Kommentare. Dazu war erst noch eine kleine Nachinstallation notwendig:

    sudo apt-get install php5-xsl

    Danach ging es dann nach Beseitigung der üblichen Tippfehler problemlos. Richtig verblüffend ist der geringe Aufwand, den man hier seitens php treiben muss. Hier mal der Code, den ich geschrieben habe (da dies mein allererstes php Programm ist, mögen mir die Profis ein paar Codeschwächen verzeihen):

    <?php header ('Location: ' . $_POST['post_id'] . '.' . $_POST['ref_type'] . '.de'); //header ('Location: /test.xhtml'); //$feed = "news/2007/test.rss"; $feed = $_POST['post_id'] . ".rss"; $html = $_POST['post_id'] . ".html.de"; $xhtml = $_POST['post_id'] . ".xhtml.de"; if (file_exists($feed)) { if ($_POST['comment']) { $rss = simplexml_load_file($feed); $newitem = $rss->channel[0]->addChild('item'); // $newitem->addChild('title', 'Titel'); $newitem->addChild('description', $_POST['comment']); if ($_POST['name']) $newitem->addChild('author', $_POST['name']); // print $rss->asXML(); $rss->asXML($feed); // writes the new rss directly to the file $xsl = new XSLTProcessor(); // create xslt processor object $xsl->setParameter('', 'DIR', '../../'); $xsl->setParameter('', 'PATH', 'news/'); $xsl->setParameter('', 'COMMENT', 'yes'); // Now transform to xhtml if (file_exists('rss2xhtml.xsl')) { # load xsl stylesheet $xslDom = new domdocument; $xslDom->load('rss2xhtml.xsl'); # load xml (rss) file $xmlDom = new domdocument; # $xmlDom->resolveExternals = true; $xmlDom->load($feed); $xsl->importStylesheet($xslDom); // load stylesheet # echo $xsl->transformToXML($xmlDom); // Transformation - return XHTML $xsl->transformToUri($xmlDom, $xhtml); // transformation into file } // Now to html if (file_exists('rss2html.xsl')) { $xslDom->load('rs2html.xsl'); // load the new stylesheet $xsl->importStylesheet($xslDom); // import it into the xsl processor (parameters are still the same) $xsl->transformToUri($xmlDom, $html); // do the transformation // Alternative would be: // $doc = $xsltproc->transformToDoc($xml); // $doc->save("test2.html"); } } } ?> Verblüffend, mit wie wenig Code man eine komplette Kommentarfunktion hinbekommt. Natürlich ist das zunächst mal nur sehr grundlegend. Noch keinerlei Spamschutz und Ähnliches. Andere Dinge wie das Einbinden eines Avatars hingegen kann man zumindest teilweise ebenfalls in das xsl Stylesheet auslagern. Nur das Finden des Avatars muss ich wohl hier im php machen, da ich dazu aller Voraussicht nach html parsen muss. Doch solche Gimmicks folgen nach und nach.

    Ach ja, nicht denken, dass jetzt bereits Jeder hier kommentieren kann. Auf meinem Webspace habe ich nach wie vor kein php. Und ich habe nach wie vor keinen Job, der mir ein Einkommen bietet, durch das ich in der Lage wäre, mit Rorkvell umzuziehen. Kommentare können mich nach wie vor per e-mail erreichen, und ich trage sie dann hier lokal manuell ein. Bis zum Umzug werde ich am Spamschutz arbeiten sowie an der Pingback funktion.