. .

Kontaktieren Sie uns

Wünschen Sie eine Offerte? Oder haben Sie Fragen zu unseren Angeboten?

Kontakt

Silverstripe: RSS-Feed auf allen Seiten anzeigen

Von Florian Thoma am 22.02.2011 | 0 Kommentare

Tags: ,

In der Silverstripe-Dokumentation wird beschrieben, wie man das Link-Tag für einen RSS-Feed auf einer Seite ausgibt. Um dieses Tag aber auf allen Seiten eines Auftritts auszugeben, braucht es ein paar Anpassungen.

Als Beispiel nehme ich hier ein News-Modul, das für die Übersichtsseite den Seitentyp NewsOverview und für die einzelnen Einträge NewsPage verwendet.

Um das Link-Tag für den RSS-Feed auf allen Seiten ausgeben zu können, muss die in der Dokumentation beschriebene Methode init() generalisiert und auf alle Seiten erweitert werden. Dazu wird eine Extension für den Page_Controller implementiert, der für jede Instanz des Seitentyps NewsOverview ein Link-Tag generiert:

class NewsRssExtension extends Extension{
    function onBeforeInit(){
        $aOverviewPages = DataObject::get("NewsOverview");
        foreach($aOverviewPages as $page) {
            RSSFeed::linkToFeed($page->Link("rss"), $page->Title." as RSS feed");
        }
    }
}

Diese Extension wird in der Datei _config.php dem Page_Controller angehängt:

Object::add_extension('Page_Controller','NewsRssExtension');

In der Klasse NewsOverview_Controller wird (wie in der Silverstripe-Dokumentation beschrieben) die rss-Methode integriert, welche die Newseinträge ausgibt:

class NewsOverview_Controller extends Page_Controller {
    
    function rss() {
        $rss = new RSSFeed($this->NewsItems(10), $this->Link(), $this->Title, null, "Title", "Content", "", "LastEdited");
        $rss->outputToBrowser();
    }
    
    function NewsItems($limit = 0) {
        $curChildren = $this->AllChildren();
        if ($curChildren) {
            $curChildren->sort('Date', 'DESC');
            if ($limit > 0) {
                $curChildren = $curChildren->getRange(0,$limit);
            }
        }
        return $curChildren;
    }
}

Mit dieser kleinen Anpassung können nun alle Feeds des Auftritts auf allen Seiten abonniert werden.


Geben Sie einen Kommentar ab

Kommentare

Bisher hat niemand diese Seite kommentiert.

RSS Feed für die Kommentare auf dieser Seite