blog webempresa

Cómo crear un feed RSS con el API de Joomla

por | Abr 28, 2010 | Aprender Joomla!

Webempresa y RSS en JoomlaLos feed RSS son un estándar creado para mantenerse actualizado de las últimas noticias. Están basados en tecnología XML, por lo que se pueden usar bajo cualquier plataforma y ser generados bajo cualquier tecnología. Joomla dispone de un API para crear estos feeds de una manera bastante sencilla.

Al igual que disponemos de un tipo de vista HTML, RAW o PDF, también se dispone del tipo de vista FEED. Usaremos el objeto JView bajo el directorio views típico que suele contener cada componente, pero esta vez el nombre del fichero deberá ser view.feed.php.

Vamos a ver un ejemplo sencillo en el que crearemos un feed a partir de la tabla de usuarios de joomla a modo de ejemplo.

Código del fichero view.html.php


defined( '_JEXEC') or die( 'Restricted access');
jimport( 'joomla.application.component.view');

class wefeedViewusuarios extends JView
{
function display($tpl = null){
$model = $this->getModel();
$usuarios = $model->getUsuarios();
$this->assignRef("usuarios",$usuarios);

$document =& JFactory::getDocument();
$atributos = array("type" => "application/rss+xml","title" => "Feed de Usuarios");
$document->addHeadLink("index.php?option=com_wefeed&view=usuarios&format=feed", "alternate", "rel", $atributos);
parent::display($tpl);
}

}

Con el método addHeadLink del objeto JDocument añadimos el enlace al RSS que aparecerá generalmente a la derecha de la URL en el navegador. La variable $atributos contiene información para configurar el feed. La URL del feed es la misma que la de la vista pero se le agrega el parámetro “format=feed”.

Código del fichero view.feed.php


defined( '_JEXEC') or die( 'Restricted access');
jimport( 'joomla.application.component.view');

class wefeedViewusuarios extends JView
{
function display($tpl = null){
//El model ha de llamarse igual que la vista!!
$model = $this->getModel();
$usuarios = $model->getUsuarios();
$document =& JFactory::getDocument();
foreach($usuarios as $usuario){

$document->setTitle('Feed de usuarios');
$document->set('copyright', 'WebEmpresa');

$item = new JFeedItem();
$item->set('title', "Usuario:" . $usuario->usename);
$item->set('link', "index.php?com_user&user_id=" . $usuario->id);
$item->set('description', "Alguna descripción.");
$document->addItem($item);

}
parent::display($tpl);
}

}

Después, al acceder a la vista usuarios, aparecerá el botón para suscribirse.

Feed generado con el Framework de Joomla

Y al pinchar, se generará automáticamente el feed:


<?xml version="1.0" encoding="utf-8"?>
<!-- generator="Joomla! 1.5 - Open Source Content Management" -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Feed de usuarios</title>
<description>Joomla! - el motor de portales dinámicos y sistema de administración de contenidos</description>
<link>http://localhost</link>
<lastBuildDate>Sun, 28 Mar 2010 00:34:52 +0000</lastBuildDate>
<generator>Joomla! 1.5 - Open Source Content Management</generator>
<language>es-es</language>
<copyright>WebEmpresa</copyright>
<item>
<title>Usuario:</title>
<link>http://localhostindex.php?com_user&user_id=62</link>
<guid>http://localhostindex.php?com_user&user_id=62</guid>
<description><![CDATA[Alguna descripción.]]></description>
</item>
<item>
<title>Usuario:</title>
<link>http://localhostindex.php?com_user&user_id=63</link>
<guid>http://localhostindex.php?com_user&user_id=63</guid>
<description><![CDATA[Alguna descripción.]]></description>
</item>
<item>
<title>Usuario:</title>
<link>http://localhostindex.php?com_user&user_id=64</link>
<guid>http://localhostindex.php?com_user&user_id=64</guid>
<description><![CDATA[Alguna descripción.]]></description>
</item>
</channel>
</rss>

El navegador lo interpretará y abrirá automáticamente la aplicación que tengas configurada en el sistema para administrar las suscripciones RSS.

Administrador de suscripciones de Firefox

De esta forma, cuando accedamos a la vista usuarios, aparecerá en botón para suscribirse por RSS y dotaremos a nuestros usuarios de una forma sencilla y estandarizada de seguir las noticias de nuestro sitio.

Esperamos que os haya ayudado este artículo para vuestros desarrollos.

¿Te ha resultado útil este artículo?

Black Friday 2024