image image


Worknote: RubyFrontier und RSS

image

Heute habe ich versucht, diesem kleinen Notizbuch einen (noch experimentellen) RSS-Feed zu spendieren. Dabei bin ich auf folgende Probleme gestoßen:

[Erstens]: RubyFrontier erlaubt es einem zwar, ein eigenes pageheader-Makro zu definieren, aber offensichtlich kein eigenes pagefooter-Makro. Mein simpler Versuch, in dem Ordner xml, in dem der RSS-Feed liegen soll, eine Datei #pagefooter.txt anzulegen, die nur die dürren Zeilen

	</channel>
</rss>

enthielt, schlug zwar nicht fehl, aber RubyFrontier ignorierte diese Datei geflissentlich.

[Lösung]: Das Makro <%= pagefooter() %> im Template gar nicht erst aufrufen. Mein Template für den RSS-Feed sieht daher so aus:

<%= pageheader() %>
		<p id="bodytext"></p>
	</channel>
</rss>

[Zweitens]: Egal ob man nur <bodytext> oder <p id="bodytext"></p> im Template verwendet, RubyFrontier klammert den zu rendernden Text gandenlos in ein <p>…</p>-Paar. Und das hat natürlich im RSS-Feed nichts verloren.

[Lösung]: Dem RSS-Feed eine Direktive #xml "true" zu verpassen und dann am Ende des finalFilters.rb folgende Zeilen einzufügen:

if adrPageTable[:xml]
	adrPageTable[:renderedtext] = adrPageTable[:renderedtext].gsub("<p>", "")
	adrPageTable[:renderedtext] = adrPageTable[:renderedtext].gsub("</p>", "")
end

Im Endeffekt besteht der RSS-Feed nun aus drei Dateien. Einmal das oben schon erwähnte, minimalistische Template (ich habe es blank genannt), dann einem Pageheader, der so aussieht:

<?xml version="1.0" encoding="UTF-8"?>
<rss version ="2.0">
	<channel>
		<title>Jörgs kleines Notizheft</title>
		<link>http://notizheft.kantel-chaos-team.de/</link>
		<description>Auf den Weg zum World Markdown</description>
		<language>de-de</language>
		<copyright>(cc) 2012 - <%= yearnow() %></copyright>
		<image>
			<url>http://notizheft.kantel-chaos-team.de/images/rubyFrontierLogo.png</url>
			<title>RubyFrontier Logo</title>
			<link>http://www.schockwellenreiter.de/impressum/</link>
		</image>

Und schließlich die eigentliche RSS-Datei (rss.txt, wird nach rss.xml herausgerendert):

#title "RSS-Feed"
#fileextension ".xml"
#markdown "false"
#template "blank"
#xml "true"

<item>
	<title>Magisches Spielzeug</title>
	<description>Heute: Das magnetische Orakel</description>
	<link>http://notizheft.kantel-chaos-team.de/2012/08/20120809photo01.html</link>
</item>

...

Momentan wird diese Datei von mir noch händisch gefüllt. Der nächste Schritt wäre daher, ein Makro zu schreiben, daß dieses mehr oder weniger automatisch erledigt.

Schließlich sollte man noch im Pageheader an geeigneter Stelle diese Zeile einfügen

<link rel="alternate" type="application/rss+xml" title="RSS 2.0"
 href="http://notizheft.kantel-chaos-team.de/xml/rss.xml" />

damit von Browsern und Aggregatoren der Link zum Feed erkannt wird.



comments powered by Disqus