RSS Feed in Seblod
Diese Anleitung zeigt wie man einen individuellen RSS Feed für Seblod Inhalte erstellt. Die Ausgabe erfolgt über "Lists & Search Types".
Noch ein Hinweis vorab: Das Plugin SEBLODFeed (nicht von Seblod), funktioniert leider nicht. Es arbeitet nur auf Basis des nativen Joomla RSS Moduls. Hier eine andere Lösung.
Grundtemplate installieren bzw. kopieren
Wir entwickleln unsere RSS Feed Ausgabe durch eine Modifikation des Template "List" von Seblod. Dieses ist nicht in der Standard-Installation von Seblod enthalten. Da wir das Template grundlegend verändern, duplizieren wir es nach der Installation. So beugen wir Problemen vor, falls man Seblod Apps installiert, die auf diesem Template basieren.
- Installation des List Templates (kostenlos)
- Kopieren des Templates
- Template in Joomla kopieren (seb_list)
Ext > Template > Template > öffnen und auf "Template kopieren" klicken
Nun befindet sich ein neues Verzeichnis im Ordner Templates - Kopiertes Template in Seblod integrieren
Seblod > Templates > Neu ... Template auswählen und korrekten Typ nehmen (List)
- Template in Joomla kopieren (seb_list)
"Lists & Search Types" sowie Menüpunkt anlegen
Damit wir eine selbst definierte URL-Struktur haben, legen wir einen Menüpunkt an.
- Lists & Search Types
- Anlegen eines neuen "Lists & Search Types" basierend auf dem gewünschten Content-Type z. B. Artikel. Wähle anschließend das Template aus (kopiertes Template z. B. List RSS).
- Füge ein paar Testfeld hinzu, um die Ausgabe zu kontrollieren z. B. Artikel Titel
- Menüpunkt anlegen
- Es empfiehlt sich einen Menüpunkt in einen versteckten Menü anzulegen (User sollen Inhalte nicht sehen)
- Anlegen: Wähle als Menüeintragstype Seblod > List & Search und verweise auf den neuen "Lists & Search Types"
- Setze den Menüpunkt auf Noindex/Follow
- URL-Aufruf (kontrolliere ob eine Ausgabe stattfindet)
- Normale URL: Rufe über deine URL Logik den Menüpunkt auf z. B. http://www.deine-domain.de/rss-feed
Hier siehst du nun die übliche Ausgabe mit dem Routine-Markup von Seblod bzw. des List-Template - RSS URL: Die RSS URL erhälst du über das Anhängen der Parameter "index.php?format=xml"
Bsp: http://www.deine-domain.de/rss-feed/index.php?format=xml
Schaue dir nun den Quellcode der Ausgabe an. Diesen modfizieren wir zu einem sauberen RSS-Ausgabe im XML Format
- Normale URL: Rufe über deine URL Logik den Menüpunkt auf z. B. http://www.deine-domain.de/rss-feed
Template-Modifikation zu einem RSS 2.0 Feed
Wir bauen nun das kopierte Template List zu unseren individuellen RSS-Feed um. Hier ein paar Quellen zum Einlesen und Tools zur Kontrolle:
- RSS 2.0 Specification von Harvard (gute grundlegenden Erklärung) Beispiel-Datei
- RSS Guidlines von Flipboard (Anfoderungen an einen Feed der Flipboard eingebunden werden soll)
- RSS Validator (Ergebnis sollte natürlich valide sein)
- RSS Interpretations-Check: Hier kann man einfach mit den Firefox die XML Datei aufrufen, dieser stellt sie dann visuell aufgebereitet dar.
Modifkation des List Template
Durch Modifikation des der index.php im kopierten List Template, kann die Grundstrukur des RSS definiert werden. Siehe hierzu die angehängte Datei. In der Datei müssen die zentralen RSS Meta Informationen angepasst werden. Folgende Mindestfelder sollten vorhanden sein:
<rss version="2.0">
<channel>
<!-- Central Meta information about the Feed * = required -->
<title>*Title of your RSS Feed</title>
<link>*Central Url of your Website</link>
<description>*Liftoff to Space Exploration.</description>
<language>Sprachcode z. B. de-de</language>
<item>
<!-- item 1 -->
</item>
<item>
<!-- item 2 -->
</item>
</channel>
</rss>
Felder Mark-Up mit BeforeRender-Plugin
Die Tags innerhalb der einzelnen Datensätze passen wir über das BeforRender-Plugin an, das im Code Pack enthalten ist (30 €). Wir passen über das Plugin die Ausgabe innerhalb des Tags "<item>" an. Hierzu setzen wir alle unseren Felder auf die Position "hidden" und erstellen ein Dummy Feld für den Bereich Element. Hier Erfolgt dann unsere Zentrale Ausgabe via Variablenzuweisung. Eine BeforeRender Feld erstellen wir auch und vermerken dort den PHP Code und setzen es auf "hidden". (Hinweis Typo-Plugin ist hier nicht ausreichend)
Feldübersicht zu XML-Item
Viele Felder sind optional. Es ist jedoch zu empfehlen mindesten die nachfolgenden zu implementieren.
-
- <title>Titel</title>
-
<description>Beschreibung ... Kann auch HTML-Code enthalten</description>
-
<link>Artikelurl</link>
Je nachdem wie die URL aufgebaut ist kann man z. B. das Feld Artikel Alias oder ID benutzen und canonicals arbeiten. - <pubDate>Veröffentlichtungsdatum in folgenden Format "Tue, 03 Jun 2003 09:39:21 GMT"</pubDate>
PHP Format hierzu: "D, d M Y H:i:s O" - Einfach in Typo-Plugin auf Date und Markup festlegen
Hinweis: Da man das Typo-Plugin in der Variante HTML nun nicht mehr verwenden kann ... mache folgendes. Setze das Feld auf hidden und rufe es über das Typo-Plugin HTML eines anderen Felds auf mit z. B. "<pubDate>$cck->getTypo('art_publish_up');</pubDate>". Inhalt wird nun gerendert und kann unter Date definiert werden.
Beispielcode für BeforeRender Feld
/* Markup XML for item zone */
// <title>
$title = '<title>'.$fields['my_headline']->value.'</title>';
// <description>
$desc = '<description>'.$fields['my_description']->value.'</description>';
// <link>
$link = '<link>http://mydomain.de/mydir/'.$fields['art_alias']->value.'</link>';
// <pubDate> Format for RSS
$newdate = $fields['art_publish_up']->value;
$newdate = strtotime($newdate); // String to normal Format
$newdate = '<pubDate>'.date(\DateTime::RSS, $newdate).'</pubDate>';
// RSS Compilation of ITEM-Zone for Output
$fields['my_dummy_output']->value = $title.$desc.$link.$newdate;
Abschluss
- Hat alles geklappt ist der RSS 2.0 Feed über z. B. http://www.deine-domain.de/rss-feed/index.php?format=xml erreichen
- Überprüfe ob der Feed valide ist und wie er im Firefox aussieht
- Die Anzahl der Items kann man über das Template bzw. über den Menüpunkt bestimmen
DOWNLOADS