Joomla! 1.7.0: error Syndication RSS Feeds
Error en módulo Syndication RSS Feeds
Si estás leyendo este artículo es porque seguramente (y acertadamente) estés interesado en redifundir el contenido de tu página Web. Existen varias extensiones y formas de hacerlo pero hoy nos vamos a centrar en el componente que trae por defecto Joomla!. Al añadir el módulo Syndication RSS Feeds en mi Web desde Joomla! 1.7.0, observo con sorpresa que se produce un error en el archivo helper.php de dicho módulo en la linea 21. El error es el siguiente:
Warning: strpos() expects parameter 1 to be string, array given in
karmany_Web\modules\mod_syndicate\helper.php on line 21
La verdad que sorprende un poco, pero no puedes poner el módulo de RSS que viene por defecto en Joomla! 1.7.0 porque salta este error.
Examinando el código de error
Yo en estos casos (algo que recomiendo), es buscar estos errores que me aparecen en la Web oficial de Joomla! porque pienso que ya le habrá pasado antes a alguien (joomla.org).
En este error del que trata el artículo que estás leyendo, si observo el archivo helper.php del módulo veo el poco código que tiene y es el siguiente:
class modSyndicateHelper
{
static function getLink(&$params)
{
$document = JFactory::getDocument();
foreach($document->_links as $link)
{
21-> if (strpos($link, 'application/'.$params->get('format').'+xml')) {
preg_match("#href=\"(.*?)\"#s", $link, $matches);
return $matches[1];
}
}
}
}
La linea 21 la he marcado como 21->. Ahí puedes ver la función strpos que nos da el error. Es un código muy sencillo de entender pues la función getLink lo que retorna es el enlace de sindicación.
Cómo solucionarlo
Este error está tratado en el siguiente foro: Foro Joomla!.org: Module Syndication Feeds not working in 1.7?
Y llegan a solucionarlo con el siguiente parche: Parche Module Syndication Feed
Ese parche modifica el código anterior que he puesto por el siguiente (helper.php):
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;
}
}
}
}
Lo he probado y efectivamente ya no sale el error y a mi me funciona correctamente porque el enlace final es totalmente correcto.