Anzeige
Anzeige
UX & Design
Artikel merken

RSS-Feeds, Druckversion und PDF-Ausgabe anbieten: Inhaltsausgabe erweitern

TYPO3 bietet vielfältige Möglichkeiten, Inhalte auf Funktionsebene zu manipulieren und den im CMS abgelegten Content in diversen Formaten auszugeben. So kann TYPO3 den Lesern News von der Startseite als RSS-Feed anbieten, längere Artikel als Druckversion bereitstellen und die Anfahrtsbeschreibung automatisch in ein PDF wandeln.

7 Min. Lesezeit
Anzeige
Anzeige

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

Anzeige
Anzeige

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:

Listing 18.1 RSS-Datei
<?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:

Anzeige
Anzeige
RSS-Konfiguration im Constants-Feld
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.

Anzeige
Anzeige

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.

Umfang erweitern
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].

Anzeige
Anzeige

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:

Erweitern des Namespace
<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:

XML
<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:

Anzeige
Anzeige
TYPOSCRIPT
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:

Anzeige
Anzeige
CSS
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:

TYPOSCRIPT
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:

Anzeige
Anzeige
HTML
<!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:

TYPOSCRIPT
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:

TYPOSCRIPT
plugin.tx_cronprintlink_pi1 {
	type = 98
}

Listing 11

TS Setup, um den Link anzupassen
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.

Anzeige
Anzeige

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:

SHELL
# 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:

Anzeige
Anzeige
SHELL
# 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
Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige