Hallo in die Runde,
immer wenn ich meinen RSS-Reader aufmache, um nach dem aktuellen Stand der Dinge zu schauen, bin ich ein bisschen traurig darüber, dass so wenige Webseitenbetreiber Bilder in ihre Feeds einbinden, so dass diese als Vorschaubilder im Reader angezeigt werden. Da ich mich selbst immer wieder dabei erwische, wie ich vorwiegend solche Feeds lese, die mich mit einem Bild - anstelle eines langweiligen grauen Kastens - anlächeln, dachte ich daran, dass es Zeit ist gute Vorsätze in die Tat umzusetzen und ein wenig Hand an den Contao-Core zu legen.
Bevor ich jedoch auf die Suche nach der richtigen Stelle im Quellcode gegangen bin, wollte ich einmal schauen, welche Möglichkeiten der "RSS-Standard" bietet: http://www.w3schools.com/rss/rss_tag_image.asp. Parallel dazu habe ich mir angeschaut, wie meine Miteiferer vorgegangen sind: Sehr zu meiner Überraschung musste ich feststellen, dass diese das <img>-Element als Teil der description (nicht Contao) eingebunden haben.
Nachdem also alle Infos vorlagen, habe ich mich auf die Suche nach der betreffenden Datei gemacht und bin in der /contao/system/modules/core/library/Contao/feed.php fündig geworden. Ab Zeile 131 steht dort
Da ich mir bzgl. der Syntax sehr unsicher bin, frage ich mich aktuell, wie sich Bilder, die ich in den Teasern verwendet habe, an dieser Stelle einbinden lassen? Wenn ich raten sollte, dann würde ich sagen, dass $objItem sicherlich keine der gewünschten Informationen enthält, so dass man ein $xml .= '<image>'; einfügen könnte, oder?PHP-Code:
public function generateRss()
{
$this->adjustPublicationDate();
$xml = '<?xml version="1.0" encoding="' . $GLOBALS['TL_CONFIG']['characterSet'] . '"?>';
$xml .= '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">';
$xml .= '<channel>';
$xml .= '<title>' . specialchars($this->title) . '</title>';
$xml .= '<description>' . specialchars($this->description) . '</description>';
$xml .= '<link>' . specialchars($this->link) . '</link>';
$xml .= '<language>' . $this->language . '</language>';
$xml .= '<pubDate>' . date('r', $this->published) . '</pubDate>';
$xml .= '<generator>Contao Open Source CMS</generator>';
$xml .= '<atom:link href="' . specialchars(\Environment::get('base') . $this->strName) . '.xml" rel="self" type="application/rss+xml" />';
foreach ($this->arrItems as $objItem)
{
$xml .= '<item>';
$xml .= '<title>' . specialchars($objItem->title) . '</title>';
$xml .= '<description><![CDATA[' . preg_replace('/[\n\r]+/', ' ', $objItem->description) . ']]></description>';
$xml .= '<link>' . specialchars($objItem->link) . '</link>';
$xml .= '<pubDate>' . date('r', $objItem->published) . '</pubDate>';
Ab Zeile 172 werden die enclosures eingebunden, die im Prinzip den heiß begehrten img-url-pfad beinhalten:
PHP-Code:
// Enclosures
if (is_array($objItem->enclosure))
{
foreach ($objItem->enclosure as $arrEnclosure)
{
$xml .= '<enclosure url="' . $arrEnclosure['url'] . '" length="' . $arrEnclosure['length'] . '" type="' . $arrEnclosure['type'] . '" />';
}
}
Da es sich hierbei jedoch um einen anderen Array handelt, benötige ich ein wenig Hilfe, um nicht gar so sehr zu "quick and dirty" abzudriften, falls es überhaupt möglich ist. Der Feed steht aktuell auf "Export: Teasertexte", was auch so bleiben soll. Die Update(un)sicherheit spielt für mich aufgrund der Installationsgröße vorerst keine Rolle.
Ich bin für alle Rückmeldungen dankbar!
Cheers
Lesezeichen