RSS-Feeds, Druckversion und PDF-Ausgabe anbieten: Inhaltsausgabe erweitern
Viele TYPO3-Websites nutzen die Extension tt_news, um aktuelle Meldungen auf der Startseite anzuzeigen. Da liegt es nahe, diese Meldungen den Lesern auch als Newsfeed (RSS-Feed) zur Verfügung zu stellen.
RSS-Feeds anbieten
Ein RSS-Feed besteht aus einer XML-Datei, die von einem Newsreader geparst und angezeigt werden kann. Dabei werden keinerlei Formatierungen oder Designs angewendet. Eine RSS-Datei sieht folgendermaßen aus:
<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"> <channel> <title>Titel der Webseite</title> <link>URL der Webseite</link> <description>Beschreibung</description> <language>de</language> <image> <title>Name der Seite</title> <url>URL zu einem Logo der Seite</url> <link>URL der Webseite</link> <width>Breite des Bildes</width> <height>Höhe des Bildes</height> <description>Beschreibung</description> </image> <generator>TYPO3 - get.content.right</generator> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <lastBuildDate>Mon, 19 Feb 2007 15:31:00 +0100</lastBuildDate> <item> <title>Titel des Beitrags</title> <link>URL zum Beitrag</link> <description>(kurze) Inhaltsangabe</description> <category>Kategorie1</category> <category>Kategorie2</category> <author>Mailadresse des Autoren</author> <pubDate>Mon, 19 Feb 2007 15:31:00 +0100</pubDate> </item> <item> <title>Titel des zweiten Beitrags</title> <link>URL zum zweiten Beitrag</link> <description>(kurze) Inhaltsangabe</description> <category>Kategorie1</category> <author>Mailadresse des Autoren</author> <pubDate>Sun, 18 Feb 2007 15:48:00 +0100</pubDate> </item> </channel> </rss>
Listing 1
Alles, was Sie benötigen, um eine RSS-Datei anzubieten, bringt tt_news schon mit sich. Im Template der Webseite muss eine neue statische Vorlage namens News-feed (RSS,RDF,ATOM) (tt_news) eingebunden werden. Nun muss die RSS-Erstellung noch konfiguriert werden. Die Konfiguration können Sie bequem im Constants-Editor vornehmen. Wechseln Sie zu „Web > Templates“ und wählen Sie die Seite aus, die Ihr Template enthält. Das Constants-Feld sollte folgende Eintragungen enthalten:
01: plugin.tt_news.displayXML.rss2_tmplFile = EXT:tt_news/res/rss_2.tmpl 02: plugin.tt_news.displayXML.xmlIcon = EXT:tt_news/ext_icon.gif 03: plugin.tt_news.displayXML.xmlFormat = rss2 04: plugin.tt_news.displayXML.xmlTitle = your-server.org: Latest News 05: plugin.tt_news.displayXML.xmlLink = http://meinedomain.tv/ 06: plugin.tt_news.displayXML.xmlDesc = Latest news 07: plugin.tt_news.displayXML.xmlLang = de 08: plugin.tt_news.displayXML.xmlLimit = 10
Listing 2
Zeile 01 können Sie getrost weglassen, sofern Sie keine eigene Vorlagendatei verwenden möchten. In Zeile 02 wird eine Grafik angesprochen, die von einigen RSS-Readern angezeigt wird. Für RSS 0.91 ist diese Grafik erforderlich, Atom hingegen wertet sie nicht aus. Alle anderen Formate akzeptieren die Grafik optional.
Der Feed ist nun unter http://meinedomain.tv/?type=100 erreichbar. Wenn Sie den Feed aufrufen, werden Sie feststellen, dass nur die ersten hundert Zeichen dargestellt werden. Dieser Wert lässt sich erhöhen, der Nachteil ist allerdings, dass das Description-Feld normalerweise keinerlei Formatierungen enthält. Wenn bei einem Eintrag keine Beschreibung eingegeben wurde, sondern nur der eigentliche Text enthalten ist, wird dieser angezeigt, allerdings ohne Formatierungen, beispielsweise Absätze.
xmlnews.10.displayXML.subheader_stdWrap.crop = 9000 | ... | 1
Listing 3
Michael Feinbier hat eine Möglichkeit gefunden, den Inhalt auch mit Formatierungen im RSS-Feed unterzubringen [1]. Ab RSS 2.0 ist es möglich, den Feed über eigene Namespaces zu erweitern. Dazu muss im RSS-Header der Namespace deklariert werden. Die Spezifikationen zu diesem Namespace finden Sie unter [2].
Die nötigen Änderungen müssen Sie in der RSS-Vorlagendatei „rss_2.tmpl“ durchführen, die Sie im Verzeichnis „typo3conf/ext/tt_news/res/“ finden. Kopieren Sie die Datei in das Verzeichnis, in dem Sie Ihre anderen Vorlagendateien speichern (z. B. fileadmin/template/). Öffnen Sie die Datei und ersetzen Sie die vorhandene RSS-Deklaration durch folgende:
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
Listing 4
Um die News-Einträge in den RSS-Feed zu bekommen, benötigen Sie Marker innerhalb Ihres Templates. Allerdings muss verhindert werden, das eventuelle Markup-Zeichen innerhalb Ihrer News-Einträge vom Parser interpretiert werden. Der einfachste Weg, das Problem zu lösen, ist die Verwendung von CDATA. Der neue XML-Marker <content:encoded>, der durch die Namespace-Erweiterung ermöglicht wird, nimmt den Marker auf. Der XML-Node <item> beherbergt die Daten eines Eintrages. Dieser sollte wie folgt aussehen:
<item> <title>###NEWS_TITLE###</title> <link>###NEWS_LINK###</link> <description>###NEWS_SUBHEADER###</description> <content:encoded><![CDATA[###NEWS_CONTENT###]]></content:encoded> ###NEWS_CATEGORY### ###NEWS_AUTHOR### <pubDate>###NEWS_DATE###</pubDate> </item>
Listing 5
Wenn Sie Bilder nicht über den RTE, sondern über den Bilderabschnitt im News-Formular einbinden, können Sie auch diese anzeigen lassen. Tragen Sie den Marker ###NEWS_IMAGE### vor ###NEWS_CONTENT### ein. Dann werden diese Bilder ebenfalls angezeigt. Nun gilt es, den so genannten auto-discovery-Header zu setzen. Dieser bewirkt, dass News-Reader die Feed-Adresse automatisch ermitteln können, wenn nur die normale URL zur Webseite angegeben wird:
page.headerData.100 = TEXT page.headerData.100.value (<link xhref="http://meinedomain.tv/?type=100" rel="alternate" title="RSS-Feed" type="application/rss+xml">)
Listing 6
Fast alle moderneren Browser haben heutzutage auch einen integrierten News-Reader. Auch viele E-Mail-Programme wie zum Beispiel Thunderbird können mit News-Feeds umgehen. Darüber hinaus existieren zahlreiche eigenständige News-Reader, beispielsweise die kostenlosen Programme NetNewsWire (newsgatoronline.com, Mac OS X), Feedreader (feedreader.com, Windows) oder Knode (knode.sourceforge.net, Linux).
Druckversion der Website erstellen
Gerade bei längeren Artikeln auf einer Website ist es für Besucher sehr müßig, diese mit der Druckfunktion des Browsers auszudrucken. Je nach Aufbau der Website führt dies mitunter zu erschreckenden Ergebnissen. Eine Möglichkeit der Abhilfe ist es, ein Stylesheet zu erstellen, das die Seite für den Ausdruck optimiert. Legen Sie dazu eine neue Datei an und geben Sie ihr einen eindeutigen Namen, zum Beispiel print.css. Da dieses Stylesheet für den Ausdruck optimiert sein soll, ein paar kleine Tipps:
- Verwenden Sie möglichst eine Schriftart mir Serifen (z. B. Times New Roman).
- Bei einem Ausdruck macht sich Blocksatz besser (text-align:justify;).
- Blenden Sie nicht benötigte Spalten und Elemente aus (display: none;).
Links gehen beim Ausdruck verloren. Wenn Sie die Linkadresse im Ausdruck anzeigen lassen möchten, tragen Sie folgende Zeilen in Ihr Stylesheet ein:
a[href]:after { content:" <"attr(href)">"; background-color:inherit; font-style:italic; }
Listing 7
Wenn Sie Ihr Stylesheet gespeichert haben, können Sie es per TypoScript einbinden. Hier kommt das Media-Attribut zu Hilfe. Damit lässt sich bestimmen, dass dieses Stylesheet nur für den Druck verwendet werden soll:
page.includeCSS { file1 = fileadmin/template/style.css file1.media = screen file2 = fileadmin/template/print.css file2.media = print }
Listing 8
Je nachdem, ob die Seite auf einem Monitor betrachtet oder ausgedruckt wird, wird das entsprechende Stylesheet angewendet.
Alternativ zur Einbindung eines speziellen Stylesheets können Sie die Seite auch generell optimiert für den Drucker ausgeben. Als Erstes sollten Sie dazu ein Layout für die Druckseite erstellen. Verzichten Sie dabei auf überflüssige Inhalte. Das Menü sollte möglichst schlicht und einfach gehalten sein. Eine entsprechende Vorlage könnte folgendermaßen aussehen:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Druckversion der Seite</title> </head> <body> <!-- ###DOCUMENT_BODY### begin --> <div class="meta">###PAGE_TITLE### von ###PAGE_AUTHOR###</div><hr /> ###CONTENT### <hr /><a xhref="index.php?id=###PAGE_UID###">Zurück zur webseite</a> <!-- ###DOCUMENT_BODY### end --> </body> </html>
Listing 9
Speichern Sie die Datei ab, zum Beispiel im Verzeichnis „fileadmin/templates/“. Mit einer CSS-Datei können Sie die Ausgabe anpassen, beispielsweise Titel und Autor in einer etwas kleineren oder größeren Schrift ausgeben – die vorigen Tipps gelten hier genauso. Nun folgt die Konfiguration des Templates. Einige Konstanten müssen definiert werden:
plugin.alt.print.file { template = fileadmin/templates/print.tmpl stylesheet = fileadmin/templates/print.css language = de }
Listing 10
Installieren Sie nun die Extension „Printlink“ (Extension-Key: cron_printlink). Im Template wird das Aussehen des Drucklinks angepasst:
plugin.tx_cronprintlink_pi1 { type = 98 }
Listing 11
temp.printlink < plugin.tx_cronprintlink_pi1 temp.printlink.linkContent = IMAGE temp.printlink.linkContent.file = fileadmin/print.gif temp.printlink.ATagParams = alt=”Print {field:title}” temp.printlink.ATagParams.insertData = 1 temp.printlink.stdWrap.wrap = <div class=”print”>|</div> ... page.marks.PRINTLINK < temp.printlink
Listing 12
In der HTML-Vorlage muss sich ein Marker namens ###PRINTLINK### befinden. Wenn Sie Ihre Seite neu laden, werden Sie den Drucklink entdecken, in diesem Beispiel als kleine Grafik. Wenn Sie ihn anklicken, wird sich ein Popup-Fenster öffnen und die Druckansicht angezeigt.
PDF-Version einer Webseite erstellen
Manchmal ist es hilfreich, eine einzelne Webseite als PDF-Dokument anzubieten, etwa eine Anfahrstbeschreibung. Hier hilft die Extension „PDF Generator“ (Extension-Key: pdf_generator), die aus einer Webseite eine PDF-Datei erzeugen kann. Voraussetzung dafür: Das Programm HTMLDoc muss installiert sein.
HTMLDoc ist für Windows, Mac OS X und Linux verfügbar [3] und wird sowohl als Open Source unter der GPL (nur Source-Dateien) als auch als kommerzielle Version (Installationspakete) angeboten. Unter Linux empfiehlt es sich, den Sourcecode [4] herunterzuladen und zu kompilieren. Mit folgenden Schritten entpacken, kompilieren und installieren Sie das Programm:
# tar -xvfz htmldoc-1.8.27-source.tar.gz # cd htmldoc-1.8.27 # ./configure # make && make install
Listing 13
Mit dem Befehl „htmldoc –help“ können Sie überprüfen, ob die Installation erfolgreich war. Unter Debian ist die Installation noch ein wenig leichter. Hier reicht folgender Befehl:
# apt-get install htmldoc PDF-Generator in TYPO3
Listing 14
Im Extension Manager installieren Sie anschließend die Extension „pdf_generator“ und geben den Pfad zum eben installierten HTMLDoc an.
Nach der Installation wechseln Sie in Ihr Template und öffnen den Constants-Editor. Wählen Sie im Menü des Editors pdf_generator(2) und passen Sie die Einstellungen Ihren Wünschen an. Nach dem Speichern können Sie das Ganze testen, indem Sie http://meinedomain.de/?type=123 in der Adresszeile Ihres Browsers eingeben. Das Ergebnis sollte eine PDF-Datei sein.
Den PDF Generator gibt es auch in einer neueren Variante (pdf_generator2), die ohne HTMLDoc auskommt und das
Rendering unter Verwendung der fpdf- oder pdflib-Bibliothek durchgeführt. Die aktuelle Version (0.5.0) hat allerdings den Status „Beta“.
Fazit
TYPO3 kann mehr, als nur (X)HTML-Seiten ausgeben. Formate wie RSS oder PDF bieten den Besuchern einen echten Mehrwert und lassen sich ohne großen Aufwand realisieren.
Dieser Artikel ist ein Auszug aus folgendem Buch: | |
Titel: | TYPO3 und TYPOScript – Kochbuch |
Autoren: | Alexander Ebner, Patrick Schuster |
Verlag/ISBN: | Hanser/978-3446410466 |
Preis/Umfang: | 49,90 EUR/848 Seiten, Flexcover |