Seit Joomla 1.7 funktioniert die Möglichkeit, Feeds zu abonnieren nicht mehr. Es gibt aber einige Lösungen.
RSS-Feeds anbieten in Joomla 1.7!
Vor Kurzem ist mit Joomla 1.7 wieder ein größeres Update erschienen. Leider ist auch Joomla 1.7.0 nicht ganz fehlerfrei.
Mit Joomla 1.7 wurden auch Sicherheitslücken geschlossen. Deshalb war ein schnelles Update für alle Anwender auch unbedingt anzuraten. Wer diesen Ratschlag befolgt hat, wundert sich vielleicht, warum kein RSS-Button für das Abonnieren von Feeds mehr angezeigt wird.
Wird das Modul Syndication Feeds im Backend unter Erweiterungen -> Module aktiviert, gibt Joomla eine Notice aus. Diese ist allerdings nur sichtbar, wenn in den PHP-Einstellungen "Fehler anzeigen" definiert ist.
Je nach Webhosting-Paket lässt sich sowas zb. in Confixx oder einer anderen Adminoberfläche zum Beispiel bei Httpd Spezial im Bereich PHP Debug einstellen. Normalerweise werden keine Fehler angezeigt. Diese Einstellung schlägt Joomla auch bei einer Installation vor.
Die Notice lautet:
Array to string conversion in /var/www/xxx/xxx/joomlaordner/modules/mod_syndicate/helper.php on line 21
Wobei x natürlich nicht da steht. Das sind einfach Teile des Serverpfades, die bei jedem anders aussehen können. Die Meldung sagt also aus, dass die PHP-Funktion eigentlich einen String erwartet. Zurückgegeben wird aber ein Array.
Natürlich könnte man abwarten bis ein Upgrade erscheint, welches ziemlich sicher diesen Fehler behebt. Das ist aber wohl nicht im Sinne der meisten Seitenbetreiber. Zum Glück gibt es bereits jetzt einige mehr oder weniger gute Lösungen.
Um das Problem zu beheben, muss ganz offensichtlich die Datei helper.php des Moduls mod_syndicate modifiziert werden. Der Pfad dazu ist in der oben beschriebenen Notice ja zu sehen.
Vergleicht man diese Datei mit der helper.php aus Joomla 1.5, wurde nur die Bezeichnung "static" der Funktion vorangestellt. Dies für Joomla 1.7 einfach zu entfernen führt allerdings nicht zur Lösung des Problems.
Joomla hat aber den großen Vorteil, auf die Hilfe einer riesigen Gemeinschaft bauen zu können. Und so finden sich bereits diverse Lösungen im englischen Joomla-Forum, welche hier kurz erläutert werden sollen.
Die Datei helper.php sieht im Original bei Joomla 1.7 so aus:
defined('_JEXEC') or die;
class modSyndicateHelper
{
static function getLink(&$params)
{
$document = JFactory::getDocument();
foreach($document->_links as $link)
{
if (strpos($link, 'application/'.$params->get('format').'+xml')) {
preg_match("#href=\"(.*?)\"#s", $link, $matches);
return $matches[1];
}
}
}
}
Diese Datei wird nun wie folgt abgeändert:
defined('_JEXEC') or die;
class modSyndicateHelper
{
static function getLink(&$params)
{
$document = JFactory::getDocument();
foreach($document->_links as $i=>$value)
{
if ($value[attribs][type] == 'application/'.$params->get('format').'+xml')
return $i;
}
}
}
Damit funktioniert der Feed-Button dann auch wieder. Trotzdem wird damit leider immer noch eine Notice erzeugt. Wer die Anzeige der Fehlermeldungen aber nicht aktiviert hat, kann damit sicher bis zum nächsten Joomla-Update leben.
Wie es scheint klappt das aber nur, wenn ein Update von Joomla 1.6.5 auf 1.7.0 durchgeführt wurde. Bei einer Erstinstallation von Joomla 1.7 hat es auf unserem Server nicht funktioniert.
Inzwischen ist auch ein Patch veröffentlicht worden. Damit wird auch keine Notice mehr erzeugt, aber es geht anscheinend auch nur bei einem Upgrade-Joomla und nicht bei einer Erstinstallation. Die Datei helper.php müsste demnach mit folgendem Code ersetzt werden:
defined('_JEXEC') or die;
class modSyndicateHelper
{
static function getLink(&$params)
{
$document = JFactory::getDocument();
foreach($document->_links as $link=>$value)
{
$value = JArrayHelper::toString($value);
if (strpos($value, 'application/'.$params->get('format').'+xml')) {
return $link;
}
}
}
}
Die hier genannten Vorschläge könnten also nur eine erste schnelle Hilfe darstellen um weiterhin Feeds anbieten zu können. Eine wirklich gute Lösung scheint es bis jetzt aber noch nicht zu geben.