RSS Feed in Seblod

Autor: Christian Hamberger, Kategorie: Seblod, Erstellt am: 10.11.2015, Bearbeitet: 10.11.2015, Aufrufe: 3126

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.

  1. Installation des List Templates (kostenlos)
  2. Kopieren des Templates
    1. Template in Joomla kopieren (seb_list)
      Ext > Template > Template > öffnen und auf "Template kopieren" klicken
      Nun befindet sich ein neues Verzeichnis im Ordner Templates
    2. Kopiertes Template in Seblod integrieren
      Seblod > Templates > Neu ... Template auswählen und korrekten Typ nehmen (List)

 

"Lists & Search Types" sowie Menüpunkt anlegen

Damit wir eine selbst definierte URL-Struktur haben, legen wir einen Menüpunkt an.

  1. Lists & Search Types
    1. 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).
    2. Füge ein paar Testfeld hinzu, um die Ausgabe zu kontrollieren z. B. Artikel Titel

  2. Menüpunkt anlegen
    1. Es empfiehlt sich einen Menüpunkt in einen versteckten Menü anzulegen (User sollen Inhalte nicht sehen)
    2. Anlegen: Wähle als Menüeintragstype Seblod > List & Search und verweise auf den neuen "Lists & Search Types"
    3. Setze den Menüpunkt auf Noindex/Follow
    4. 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

 

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:

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

Index.php of List Template

 

Christian Hamberger
10.11.2015
Seblod
10.11.2015
3126
Hinweis

Die Umsetzung der hier gemachten Lösungen und Vorschläge geschehen immer auf eigener Gefahr.