Sie sind hier:   » ZMS home » Dokumentation » Details » How-To » TOC-Listen » RSS

Übersichtslisten per RSS-Strom ausliefern (Content-Syndication)

Autor: Dr. Frank Hoffmann, 30.04.2003

Aus den ZMS-Objekten eines bestimmten Content-Knotens soll eine RSS-konforme XML-Datei erstellt werden. Dazu wird auf der Ebene der Darstellungstemplates eine neue DTML-Methode angelegt, die eine TOC-Liste generiert gemäss RSS-DTD (s. Links unten). Der Mechanismus wird anhand einer einfachen Grundstruktur gezeigt.

Lösungsansatz: Die folgenden DTML-Methode erzeugt einen XML-Strom, der vom RSS-typischen channel-Element eingeleitet wird. Dann erfolgt die Defintion des Einstiegsknotens und eine iteratitive Listung mit der filteredChildNodes-Funktion.

<dtml-call expr="RESPONSE.setHeader('content-type', 'text/xml')">
<?xml version="1.0" encoding="iso-8859-1" ?> 
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>

<title>medvalue.news</title>
<description>Aktuelle Themen aus dem medvalue-Netzwerk</description>
<language>de</language>
<link>http://medvalue.net</link>
<copyright>(c)2003 HOFFMANN+LIEBENBERG</copyright>

<!-- beispielhafter Einstiegsknopten content.e83 //-->
<dtml-with "content.e83">
<dtml-in "filteredChildNodes(REQUEST,PAGES,)">
<item>
<title><dtml-var "getTitle(REQUEST)"></title>
<description><dtml-var "getObjProperty('attr_dc_description',REQUEST)"></description>
<link><dtml-var "getHref2IndexHtml(REQUEST)"></link>
<dc:creator><dtml-var "getObjProperty('attr_dc_creator',REQUEST)"></dc:creator>
<dc:date><dtml-var "getLangFmtDate(getObjProperty('change_dt',REQUEST),
'eng','ISO-8601')"></dc:date>  
</item>
</dtml-in>
</dtml-with>

</channel>
</rss>

Kommentar: [howto@/support/content/e732/e736/e780/e1368][getObjProperty]: key=howto_comment
Traceback (most recent call last):
File "/home/zope/Products/zms/_objattrs.py", line 721, in getObjProperty
value = _globals.dt_html(self,value,REQUEST)
File "/home/zope/Products/zms/_globals.py", line 269, in dt_html
value = dtml( self, REQUEST)
File "/home/zope210/lib/python/DocumentTemplate/DT_String.py", line 476, in __call__
try: result = render_blocks(self._v_blocks, md)
File "/home/zope210/lib/python/DocumentTemplate/DT_With.py", line 60, in render
if type(expr) is type(''): v=md[expr]
KeyError: 'rss_medvalue'

References: