News-Feeds lassen sich auf verschiedene Weise auf Webseiten präsentieren. Beliebt ist MagpieRSS. Technisch ist alles in Ordnung, doch eine ansprechende Gestaltung macht viel Arbeit. Warum nicht mit dem Template-System Smarty komfortabel formatieren – in 7 Zeilen PHP-Code.
MagpieRSS bietet in seiner reinen Form keinerlei Möglichkeiten, die Ausgabe komfortabel zu formatieren oder zu gestalten. Handarbeit ist angesagt – oder MagpieRSS wird mit dem Template-System Smarty verkuppelt. Das ist einfacher als gedacht:
Schritt 1: Smarty und MagpieRSS
Laden Sie Smarty und MagpieRSS auf Ihren Computer, entpacken Sie beide Archive in dasselbe Verzeichnis.
Schritt 2: Hochladen
Schieben Sie beide Verzeichnisse mit einem FTP-Programm oder etwas Ähnlichem auf Ihren Webserver.
Schritt 3: Verzeichnisse anlegen
Smarty benötigt zwei spezielle Verzeichnisse: “templates” und “templates_c”. In “templates” werden HTML-Vorlagen gespeichert. Die Vorlagen sind an der Dateiendung “.tpl” zu erkennen. Das Verzeichnis “templates_c” dient Smarty als Ablageort für bereits verarbeitete Vorlagen. Aus diesem Grund muss das Verzeichnis vom Webserver-Prozess beschreibbar sein. Geben Sie dem Besitzer und der Gruppe des Besitzers vollen Zugriff auf die Datei, also “Lesen”, “Schreiben” und “Ausführen”. Funktioniert das nicht, geben Sie allen volle Rechte (Achtung – potenzielle Sicherheitslücke!). In diesem Fall sollten Sie das Verzeichnis außerhalb des WWW-Roots platzieren, damit es nicht über Webbrowser abrufbar ist.

Setzen Sie die Zugriffsrechte
Schritt 4: HTML-Vorlage
Die HTML-Vorlage nach Smarty-Art ist sehr einfach aufgebaut:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>{$title}</title> </head> <body bgcolor="#ffffff">
<h1>{$title}</h1> <ul> {foreach from=$rssitems item=eintrag} <li><a href="{$eintrag.link}">{$eintrag.title}</a> von {$eintrag.dc.creator}</li> {/foreach} </ul>
</body> </html>
Speichern Sie die Datei im Verzeichnis “templates” unter dem Namen “magptest.tpl”. Smarty-Variablen sind an den geschweiften Klammern zu erkennen. Beachten Sie die Foreach-Schleife. In diesem Konstrukt werden die Einträge aus dem RSS-Feed als li-Elemente in eine unsortierte Liste eingefügt.
Schritt 5: Das Skript
Nun folgt das eigentliche Skript. Speichern Sie es in dem Verzeichnis, in dem sich die Verzeichnisse von MagpieRSS und Smarty befinden und nennen sie die Datei “magptest.php”. Abzüglich Kommentare und Leerzeilen besteht es nur aus sieben Zeilen PHP-Code:
<?php // MagpieRSS einbinden require( 'magpierss-0.72/rss_fetch.inc' );
// Smarty einbinden require 'Smarty-2.6.14/libs/Smarty.class.php' ;
// RSS-Feed holen $rss = fetch_rss ( "http://www.medienkompetenz.hostsys.de/index.php/feed/" );
// Smarty anwerfen $smarty = new Smarty ;
// #### Feed-Einträge in HTML-Vorlage übertragen $smarty -> assign ( 'rssitems' , $rss -> items );
// Titel in HTML-Vorlage schreiben $smarty -> assign ( 'title' , $rss -> channel [ 'title' ]);
// Vorlage verarbeiten und anzeigen $smarty -> display ( "magptest0.tpl" );
?>
Der Smarty-Variablen “rssitems” wird einfach das Array mit den Feed-Einträgen, das MagpieRSS aus dem übertragenen XML erzeugt, zugewiesen. Die Feed-Adresse in der Funktion fetch_rss() von MagpieRSS können Sie natürlich nach Ihren Wünschen anpassen.
Demo im neuen Fenster
Ausgabe formatieren
Angenommen, der RSS-Feed ist so lang, dass er nicht mehr auf eine Seite passt – was dann? Der Smarty-Entwickler Monte Ohrt hat für dieses Problem eine Erweiterung entwickelt, die allerdings nicht mit dem Smarty-Archiv geliefert wird. So gehts:
Schritt 1: SmartyPaginate herunterladen
Laden Sie von das Archiv SmartyPaginate herunter und entpacken Sie es auf Ihrem Rechner. Kopieren Sie die PHP-Dateien, deren Dateiname mit “function” beginnen, in das Verzeichnis “Smarty-x.x/libs/plugins”. Die Datei “SmartyPaginate.class.php” kopieren Sie nach “Smarty-x.x/libs”.
Schritt 2: magptest.php erweitern
Erweitern Sie das Skript magptest.php wie folgt. Fügen Sie nach dem Kommentar “Smarty einbinden” folgende Zeilen ein:
<?php // #### Paginierungserweiterung einbinden require 'Smarty-2.6.14/libs/SmartyPaginate.class.php'
Die Zeile “$smarty->assign(‘rssitems’, $rss->items);” ersetzen Sie durch diese Zeilen:
// ### Anzahl der Einträge pro Seite SmartyPaginate :: setLimit ( 4 );
// "prev" und "next" eindeutschen SmartyPaginate :: setPrevText ( 'Zurück' ); SmartyPaginate :: setNextText ( 'Weiter' );
// #### Feed-Einträge in HTML-Vorlage übertragen $smarty -> assign ( 'rssitems' , get_results (& $rss ));
// Ausgabe der Erweiterung in die Vorlage schreiben SmartyPaginate :: assign ( $smarty );
Den Abschluss bildet eine neue Funktion, die Sie am Ende des Skriptes einfügen:
// #### Array mit Feed-Einträgen aufspalten function get_results (& $rss ) { $_data = $rss -> items ; SmartyPaginate :: setTotal ( count ( $_data )); return array_slice ( $_data , SmartyPaginate :: getCurrentIndex (), SmartyPaginate :: getLimit ()); }
Schritt 3: Vorlage erweitern
Fügen Sie vor die <ul>-Markierung diese Smarty-Elemente ein:
{* Kopfzeile anzeigen *} Einträge {$paginate.first}-{$paginate.last} von {$paginate.total} insgesamt.
Nach </ul> müssen die Verweise zum Seiten-Blättern eingefügt werden:
{* Seiten vor- und zurückblättern *} {paginate_prev} {paginate_middle} {paginate_next}
Das Ergebnis (Demo) ist eine auf mehreren Seiten verteilte RSS-Feed-Anzeige, die mit minimalem Aufwand programmiert wurde.
Links:
Weitere Beiträge:
- 5 Ideen wie Sie wiederkehrende Arbeitsschritte & Marketingprozesse gewinnbringend im Internet automatisieren! Ein Gastbeitrag von Robert Nabenhauer.
- Wachstum durch Facebook-Gewinnspiele: Wie Sie über Facebook virale Gewinnspiele & eine schnell wachsende Fangemeinde aufbauen
- Wie Sie aufmerksamkeitsstarke Prelaunch-, Launch- und Relaunch-Szenarien aufbauen und dabei Viralität, Spannung & Kaufkraft erzeugen
- Wie Sie waschechte Iphone-Apps mit PhoneGAP entwickeln, um am lukrativen App-Markt mitzumischen
- Wie Sie Ihr Shop-Sortiment so präsentieren, dass der Kunde in Zukunft mehr findet und eher kauft! Ein Gastbeitrag von Nicolas Schmidt-Voigt.
- 11 faszinierende BuddyPress-Plugins, um kostenlos aus WordPress ein soziales Netzwerk zu zaubern
- Die Vorboten einer neuen Internet-Industrie! Ein exklusiver Rückblick & Blick hinter die Kulissen der Clickbank-Exchange 2011 in New York.


Noch keine Kommentare vorhanden!