Creación de feeds RSS
Categorías : Apache, PHP, Programación, HTML.

Los feeds RSS son una forma de comunicar noticias diseñados para que el usuario pueda estar informado desde una sola pantalla de todas aquellas cosas que le interesan.
Si nunca habéis usado feeds es algo complicado de imaginar. La idea consiste en que los portales web con noticias como por ejemplo blogs dejen en un archivo un resumen de las nuevas noticias para que más tarde el usuario desde un visor de feeds pueda ver las novedades de todos los sitios a los que está subscrito sin necesidad de acceder por el navegador a cada página web.
Esto permite que si nos subscribimos a 4 páginas web, abriendo una sola web / programa podamos ver todas las novedades de estos cuatro sitios.
Personalmente hasta el día de ayer mi contacto con el RSS había sido prácticamente nulo, ya que no es algo que me atraiga, pero siempre está bien abrir la mente a nuevos horizontes.
Y ya que me he puesto a investigar cómo integrar feeds RSS a mi web, también he creído conveniente hacer una pequeña explicación de cómo crearlos e integrarlos a una web. Especialmente porque las paginas que he encontrado no explican muy bien el tema, o solo cuentan una parte de él.
Bueno para empezar un Feed RSS no es más que un archivo que contiene código XML dentro, que debe estar estructurado según unas reglas especificas.
La primera regla es que TODOS los datos del feed deben ir dentro de la siguiente etiqueta :
<rss version="2.0">INFORMACIÓN DEL FEED...</rss>
Dentro de un feed podemos encontrar 'canales', estos canales vienen a ser como apartados de la web, por ejemplo con mi web podría hacer un canal C/C++, otro para PHP, otro para JavaScript, etc..., o simplemente podría hacer un canal para todo el contenido de la web (que es lo que voy a hacer en mi caso).
Los canales deben tener un titulo, un link y una descripción como mínimo, también se les puede añadir más datos opcionales como podría ser el email del autor, comentarios, fecha, etc...
Veamos el siguiente ejemplo :
<channel><title>www.devildrey33.es</title><link>http://www.devildrey33.es</link><description>Página dedicada principalmente a la programación.</description><language>ES</language><item> INFORMACIÓN DEL ITEM1... </item><item> INFORMACIÓN DEL ITEM2... </item><item> INFORMACIÓN DEL ITEM3... </item></channel>
Las etiquetas title, link y description son obligatorias, y además se ha añadido la etiqueta language la cual especifica el idioma en que está escrita la información del feed. También hay varias etiquetas item que veremos a continuación.
En cada canal deben existir varios items, los items vienen a ser entradas específicas, por ejemplo para mi web esta página en concreto seria un item, el tutorial de ayer con Creación de archivos dump sería otro, etc...
Al igual que con los canales, los items también tienen unas etiquetas obligatorias y otras opcionales. Las etiquetas obligatorias son las mismas que para channel : title, link y description. Veamos el siguiente ejemplo para un item :
<item><title>Creación de archivos dump</title><link>http://www.devildrey33.es/Tutorial_WINAPI_4.php</link><description>Los archivos DUMP son una forma de depurar aplicaciones con windows.La idea consiste en que cuando una aplicación falla críticamente se guarda un archivo con el contenido en memoria.Más tarde podemos abrir esos archivos con el Visual Studio y depurar la aplicación....</description><pubDate>Mon, 03 Oct 2011 15:21:36 GMT</pubDate></item>
Como podéis ver la estructuración no es muy complicada, y en este ejemplo además de añadir las etiquetas obligatorias, se ha añadido la etiqueta pubDate la cual indica la fecha de publicación del item.
Si unimos todas las partes el archivo xml nos queda de la siguiente forma :
<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0"><channel><title>www.devildrey33.es</title><link>http://www.devildrey33.es</link><description>Página dedicada principalmente a la programación.</description><language>ES</language><item><title>Creación de archivos dump</title><link>http://www.devildrey33.es/Tutorial_WINAPI_4.php</link><description>Los archivos DUMP son una forma de depurar aplicaciones con windows.La idea consiste en que cuando una aplicación falla críticamente se guarda un archivo con el contenido en memoria.Más tarde podemos abrir esos archivos con el Visual Studio y depurar la aplicación....</description><pubDate>Mon, 03 Oct 2011 15:21:36 GMT</pubDate></item></channel></rss>
Como ultimo apunte fijaros que en la primera línea se ha incluido una etiqueta que describe la version del XML y la codificación que utiliza. Aunque no es estrictamente necesario incluir esa línea, si queremos ver bien acentuadas todas las palabras en todos los lectores de feeds mas nos vale definir una codificación.
Si quereis saber mas sobre las etiquetas disponibles para RSS 2.0 os recomiendo esta página : RSS 2.0 at Harvard Law.
Hasta aquí todo parece bastante sencillo, pero luego como debemos distribuir este feed?
Lo primero es incluir lo siguiente en el head de nuestras páginas :
<link rel="alternate" title="devildrey33 RSS" href="http://www.devildrey33.es/RSS.xml" type="application/rss+xml">
Con tener esta línea en el index.html / index.php de nuestra página, si alguien quiere subscribirse a los feeds de devildrey33 le bastaría con agregar un nuevo canal y poner la dirección "http://www.devildrey33.es" y el lector de feeds buscaría dentro del índice esa línea para luego acabar consultando el archivo RSS.xml.
También se puede utilizar un enlace de este tipo:
<a type="application/rss+xml" href="http://www.devildrey33.es/RSS.xml">Subscribirse.</a>
El problema que tiene este enlace, es que si nuestro lector de feeds no es una aplicación, no servirá de mucho. Existen lectores de feeds RSS que son parte de la web como por ejemplo 'google reader', y este no se ejecutara al presionar ese enlace por la simple razón de que no es una aplicación registrada dentro de nuestro sistema operativo.
Preguntas frecuentes
- Podemos usar un archivo php para generar los feeds, de forma que los lectores vayan a leer a un archivo PHP en vez del archivo XML?
Si, pero mucho cuidado porque algunos lectores de feeds miran la fecha de creación del archivo para actualizarse, de forma que si hacemos algún cambio quizás no se verá en el lector de feeds hasta que pase un buen rato. - Podemos utilizar etiquetas HTML dentro de las descripciones?
Si, pero en muchos casos los caracteres '<' y '>' pueden dar bastantes problemas. Las etiquetas mal cerradas también pueden dar más de un problema. - Existe alguna aplicación/script para crear nuestros feeds automáticamente?
Si, pero como cada página web es un mundo distinto, encontrar un script o una aplicación que nos funcione a medida es bastante complicado. De todas formas si por ejemplo utilizamos Wordpress existe un sitio llamado Feed burner que en teoría crea feeds automáticos. (Nunca lo he probado así que no lo puedo asegurar).
Y esto es todo por hoy, espero que este documento os sirva de ayuda si alguna vez tenéis que crear vuestros propios feeds.