Anzeige von RSS-Feeds

Bei bueltge.de hab ich das PlugIn “WP-RSSImport” entdeckt. Nach Installation “kennt” Wordpress ein neues Template-Tag, mit dem man an beliebiger Stelle im Theme ein RSS-Feeds anzeigen kann: In Form einer ungeordneten Liste werden die verlinkten Titel sowie (je nach Einstellung) die dazugehörige Beschreibung ausgegeben. Auf der Demo-Seite zum PlugIn wird gut beschrieben, wie man die Ausgabe beeinflussen kann.

Zum Testen hab ich einfach denselben Feed importiert, wie auf der Demo-Seite vorgeschlagen:

<?php RSSImport(10,"http://www.kvfl.com/wp/feed/",true,false); ?>

Funktioniert problemlos und schnell, damit werden dann 10 Beiträge aus angegebenem Feed angezeigt. Der resultierende Quelltext erschien mir jedoch merkwürdig - Die Nachrichten wurden nach folgendem Muster ausgegeben:

<ul>
<li><a href="http://linkzubeitrag1" title="Titel Beitrag 1">Titel Beitrag 1</a></li>
Text von Beitrag 1<br /><br />
</li>
<li><a href="http://linkzubeitrag2" title="Titel Beitrag 2">Titel Beitrag 2</a></li>
Text von Beitrag 2<br /><br />
</li>
</ul>

XHTML-Fehler

Überprüfung fehlgeschlagen. In Erwartung entsprechender Fehlermeldungen hab ich den HTML-Validator prüfen lassen, es erschien der Hinweis auf Zeichen, die für ihn die Überprüfung der Seite unmöglich machen:

Sorry, I am unable to validate this document because on line 122-123, 128, 140 it contained one or more bytes that I cannot interpret as utf-8 (in other words, the bytes found are not valid values in the specified Character Encoding). Please check both the content of the file and the character encoding indication.

Ich hab also einige Nachrichten erwischt, in denen neben Umlauten einige weitere Sonderzeichen enthalten waren - und RSSImport 3.0 wandelt nur die üblichen Umlaute. In diesem Fall scheiterte die Überprüfung an:

  • typographischen Anführungszeichen
  • einem ô
  • sowie einem Dreifachpunkt.

Alle Sonderzeichen umwandeln

Reine Tipp-Arbeit: Zur Umwandlung der Umlaute benutzt das PlugIn zwei Arrays, in denen festgelegt wird, welches Zeichen vor der Ausgabe durch welchen HTML-Code ausgetauscht werden. Diese müssen also erweitert werden.

Mit den Sonderzeichen-Tabellen auf dieser Seite kann man dabei gut arbeiten. Und da ich in der Vergangenheit auch mit einigen anderen PlugIns in Sachen Sonderzeichen Probleme hatte, hab ich “Nägel mit Köpfen” gemacht und beim Umschreiben der beiden Arrays gleich alleSonderzeichen eingebaut, denn diese (vielleicht übertriebene) Tipp-Arbeit kann man sicherlich auch anderswo gebrauchen …

In der PlugIn-Datei “rssimport.php” sind die Zeilen 43 und 44 zu ändern:

$umlaute = array ( .................. )
$htmlcode = array ( .................. )

Diese Zeilen austauschen durch:

$umlaute = array(chr(128),chr(129),
chr(130),chr(131),chr(132),chr(133),chr(134),
chr(135),chr(136),chr(137),chr(138),chr(139),
chr(140),chr(141),chr(142),chr(143),chr(144),
chr(145),chr(146),chr(147),chr(148),chr(149),
chr(150),chr(151),chr(152),chr(153),chr(154),
chr(155),chr(156),chr(157),chr(158),chr(159),
chr(160),chr(161),chr(162),chr(163),chr(164),
chr(165),chr(166),chr(167),chr(168),chr(169),
chr(170),chr(171),chr(172),chr(173),chr(174),
chr(175),chr(176),chr(177),chr(178),chr(179),
chr(180),chr(181),chr(182),chr(183),chr(184),
chr(185),chr(186),chr(187),chr(188),chr(189),
chr(190),chr(191),chr(192),chr(193),chr(194),
chr(195),chr(196),chr(197),chr(198),chr(199),
chr(200),chr(201),chr(202),chr(203),chr(204),
chr(205),chr(206),chr(207),chr(208),chr(209),
chr(210),chr(211),chr(212),chr(213),chr(214),
chr(215),chr(216),chr(217),chr(218),chr(219),
chr(220),chr(221),chr(222),chr(223),chr(224),
chr(225),chr(226),chr(227),chr(228),chr(229),
chr(230),chr(231),chr(232),chr(233),chr(234),
chr(235),chr(236),chr(237),chr(238),chr(239),
chr(240),chr(241),chr(242),chr(243),chr(244),
chr(245),chr(246),chr(247),chr(248),chr(249),
chr(250),chr(251),chr(252),chr(253),chr(254),
chr(255),chr(256));
$htmlcode = array('&euro;','',
'&sbquo;','&fnof;','&bdquo;','&hellip;','&dagger;',
'&Dagger;','&circ;','&permil;','&Scaron;','&lsaquo;',
'&OElig;','','&#x017D;','','',
'&lsquo;','&rsquo;','&ldquo;','&rdquo;','&bull;',
'&ndash;','&mdash;','&tilde;','&trade;','&scaron;',
'&rsaquo;','&oelig;','','&#x017E;','&Yuml;',
'&nbsp;','&iexcl;','&iexcl;','&iexcl;','&iexcl;',
'&yen;','&brvbar;','&sect;','&uml;','&copy;',
'&ordf;','&laquo;','&not;','­&shy;','&reg;',
'&macr;','&deg;','&plusmn;','&sup2;','&sup3;',
'&acute;','&micro;','&para;','&middot;','&cedil;',
'&supl;','&ordm;','&raquo;','&frac14;','&frac12;',
'&frac34;','&iquest;','&Agrave;','&Aacute;','&Acirc;',
'&Atilde;','&Auml;','&Aring;','&AElig;','&Ccedil;',
'&Egrave;','&Eacute;','&Ecirc;','&Euml;','&Igrave;',
'&Iacute;','&Icirc;','&Iuml;','&ETH;','&Ntilde;',
'&Ograve;','&Oacute;','&Ocirc;','&Otilde;','&Ouml;',
'&times;','&Oslash;','&Ugrave;','&Uacute;','&Ucirc;',
'&Uuml;','&Yacute;','&THORN;','&szlig;','&agrave;',
'&aacute;','&acirc;','&atilde;','&auml;','&aring;',
'&aelig;','&ccedil;','&egrave;','&eacute;','&ecirc;',
'&euml;','&igrave;','&iacute;','&icirc;','&iuml;',
'&eth;','&ntilde;','&ograve;','&oacute;','&ocirc;',
'&otilde;','&ouml;','&divide;','&oslash;','&ugrave;',
'&uacute;','&ucirc;','&uuml;','&yacute;','&thorn;',
'&yuml;');

Danach werden auch alle “ungewöhnlichen” Sonderzeichen korrekt umgewandelt.

Ich erhebe keinen Anspruch auf Vollständigkeit, zu einigen chr’s waren in der Sonderzeichen-Tabelle keine Umwandlungen angegeben, daher bleiben ein paar “leere” Stellen …” - Um ein kleines bisschen Übersicht zu wahren, hab ich nach jeweils 5 Zeichen einen Zeilenumbruch eingefügt.

Fast fertig:

Der HTML-Validator kann mit der Seite etwas anfangen, aber findet noch ein paar Fehler in der ausgegebenen Liste. Folgende Zeilen sind zu ändern:
(im Original-Skript 53 bis 55, aber nach oben beschriebener Änderung stimmt die Numerierung natürlich nicht mehr)

echo wptexturize('<li><a href="'.$href.'" title="'.$item['fulltitle'].'" >'.$item['title'].'</a></li>');
// Uncomment following line to also display headline description with each headline
if($displaydescriptions && $desc<>"") echo wptexturize($desc.'<br /><br />');

Stattdessen diesen Code benutzen:

echo wptexturize("\n<li><a href=\"".$href."\" title=\"".$item['fulltitle']."\">".$item['title']."</a>");
if($displaydescriptions && $desc<>"") echo wptexturize(" <br />\n".$desc."\n");
$display--;
echo wptexturize("</li>");

Nach dieser Änderung hat der Validator nichts mehr zu beanstanden.

Nachtrag: Neue Version RSSImportTwo

Das PlugIn gibt’s auch in einer erweiterten Version - ebenfalls bei bueltge.de - Zusätzlich werden jetzt auch alle UTF-8 Zeichen gewandelt.