Englisch version of blog entry.
Normalerweise verwende ich HTML als Inhalt für die Blogeinträge. Nun existiert das Problem, dass die interne Implementierung von RSS leider das HTML so rekodiert, dass alles als Text erscheint. Links, Textauszeichnungen etc. sind also nicht mehr möglich.
Mit dem Perl-Modul HTML::TagFilter geht das aber; HTML::TagFilter lässt konfigurierbar nur bestimmtes HTML zu.
HTML::Tagfilter basiert auf HTML-Parser und sollte sich zusätzlich (wenn nicht schon vorhanden) selbst einfach installieren lassen, notfalls den Hoster bitten, es hinzuzufügen.
Mein Patch bezieht sich auf Blosxom Rev. 1.69 (Jun 24 00:10:21 2008 UTC) aus dem CVS-Repo von Sourceforge.
Die Codezeilen 663–675:
if ( $encode_xml_entities && $content_type =~ m{\bxml\b} ) {
# Escape <, >, and &, and to produce valid RSS
my %escape = (
'<' => '<',
'>' => '>',
'&' => '&',
'"' => '"'
);
my $escape_re = join '|' => keys %escape;
$title =~ s/($escape_re)/$escape{$1}/g;
$body =~ s/($escape_re)/$escape{$1}/g;
}
werden ersetzt durch:
## --- 07-2008 Patch von GwenDragon für HTML-Inhalte in RSS ---
## (c)2008 Lilo von Hanffstengel "GwenDragon"
## Siehe http://www.gwendragon.de/blog/Web/Webapplikationen/Blosxom/RSS-Patch-fuer-HTML.html
## --------------
if ( $content_type =~ m{\bxml\b} ) {
my $t = $title;
my $b = $body;
eval {
require HTML::Entities;
$t = HTML::Entities::decode( $t );
#$b = HTML::Entities::decode( $b );
require HTML::TagFilter;
# and strip off HTML
my $tf = new HTML::TagFilter;
$t = $tf->filter( $t );
$b = $tf->filter( $b );
};
if ( not $@ ) {
$title = $t;
$body = $b;
}
#
if ( $@ and $encode_xml_entities ) {
# decode HTML
$title = HTML::Entities::decode($title);
$body = HTML::Entities::decode($body);
#
# Escape <, >, and &, and to produce valid RSS
my %escape = (
'<' => '<',
'>' => '>',
'&' => '&',
'"' => '"'
);
my $escape_re = join '|' => keys %escape;
$title =~ s/($escape_re)/$escape{$1}/g;
$body =~ s/($escape_re)/$escape{$1}/g;
}
}
# -------------
Viel Spaß mit dem Patch. Bei Problemen kann natürlich bei mir nachgefragt werden.
Bitte bei Weitergabe wenigstens den kleinen Hinweis auf mich einbringen.

Kommentar für Blogeintrag
Vorschau des Kommentars
TrackBack-URL:
http://www.gwendragon.de/blog/Web/Webapplikationen/Blosxom/RSS-Patch-fuer-HTML.html/trackback↑Blogeintrag