Artikelliste als RSS-FEED
- Erstellt eine Artikelliste als RSS-Feed.
- Listet Seitentitel und Beschreibung des Artikels auf.
- Die Sortierung erfolgt nach PRIO
Ein Metainfofeld
art_description
wird benötigt.
Anleitung
Mögliche Vorgehensweise für die Ausgabe: Als Block einsetzen und mit einem Template mit folgendem Inhalt verbinden:
// Senden des Headers mit korrekter Kodierung mittels rex_response
rex_response::sendContentType('application/xml; charset=utf-8');
print $this->getArticle(1);
Eingabe
<div class="form-group">
<label class="col-sm-5 control-label">Kategorie mit News</label>
<div class="col-sm-7">
<?php
// Bereitstellen einer Kategorieauswahl
// Siehe http://www.redaxo.org/docs/master/class-rex_category_select.html
$select = new rex_category_select($ignore_offlines = false, $clang = false, $check_perms = true, $add_homepage = false);
$select->setName("REX_INPUT_VALUE[1]");
// Legt fest welcher Wert ausgewählt werden soll, hier der Wert von REX_VALUE[1]
$select->setSelected("REX_VALUE[1]");
$select->setAttribute('class', 'form-control');
$select->setSize(20);
echo $select->get();
?>
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">Titel des Feeds</label>
<div class="col-sm-7">
<input class="form-control" placeholder="Die XY Nachrichten"
type="text" name="REX_INPUT_VALUE[2]" value="REX_VALUE[2]">
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">URL der Website</label>
<div class="col-sm-7">
<input class="form-control" placeholder="http://domain.xy"
type="text" name="REX_INPUT_VALUE[3]" value="REX_VALUE[3]">
</div>
</div>
<div class="form-group">
<label class="col-sm-5 control-label">Beschreibung des Feeds</label>
<div class="col-sm-7">
<input class="form-control" placeholder="Unsere aktuellen Meldungen"
type="text" name="REX_INPUT_VALUE[4]" value="REX_VALUE[4]">
</div>
</div>
Ausgabe
// REDAXO-Modul: RSS Feed Erstellung
// Document Header definieren und initialisieren
$xml = new SimpleXMLElement('<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"></rss>');
$xml->addAttribute('version', '2.0');
// Channel-Deklaration
$channel = $xml->addChild("channel");
$base = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$channel->addChild('title', "REX_VALUE[2]")
->addChild("link", "REX_VALUE[3]")
->addChild("description", "REX_VALUE[4]")
->addChild("language", "de-de")
->addChild('generator', 'REDAXO rss');
$atom = $xml->channel->addChild('atom:link');
$atom->addAttribute('href', $base);
$atom->addAttribute('rel', 'self');
$atom->addAttribute('type', 'application/rss+xml');
// Artikel holen
$cat = rex_category::get('REX_VALUE[1]');
$children = $cat->getArticles();
// Sortieren nach Erstellungsdatum
usort($children, function($a, $b) {
return $a->getCreateDate() < $b->getCreateDate();
});
foreach ($children as $child) {
if ($child->isOnline()) {
$item = $channel->addChild("item");
$url = rex_getUrl($child->getId());
$item->addChild("title", $child->getName())
->addChild("link", "REX_VALUE[3]" . $url)
->addChild("guid", "REX_VALUE[3]" . $url)
->addChild('pubDate', date("D, d M Y H:i:s +0100", $child->getCreateDate()))
->addChild("description", $child->getValue('art_description'));
}
}
// Ausgabe des RSS-Feeds
echo $xml->asXML();