¿Cómo crear un RSS para mi Sitio?

Si bien la mayoría de los gestores de contenidos como WordPress, Joomla, Drupal…. etc., nos traen predifinidos los Feed RSS, podemos encontrarnos con la situación de personalizar, modificar, o si estamos desarrollando un sitio desde cero y necesitamos crear uno nuevo para tal objetivo. Si te encontras en esta situación te puede servir este post.
Antes de empezar con el desarrollo de nuestro RSS. Sería interesante explicar un poco que es RSS:
RSS es una familia de formatos de fuentes web codificados en XML. Se utiliza para suministrar a suscriptores de información actualizada frecuentemente. El formato permite distribuir contenido sin necesidad de un navegador, utilizando un software diseñado para leer estos contenidos RSS. Las últimas versiones de los principales navegadores permiten leer los RSS sin necesidad de software adicional.
Muy bien, pero ¿que es XML? o ¿para que sirve?.
El XML es un lenguaje de marcado extensible estricto de gran utilidad en el intercambio de datos, ya que permite describirlos sin mostrarlos al usuario, pero siendo a su vez legibles a través de diversas apliaciones (navegadores, bases de datos, etc.).
Antes de continuar te recomiendo leas algún tutorial básico de XML si te parece extraño este termino, si buscas en la red seguro encontras muchos.
Ahora que tenemos un poco más claro de que es un RSS, empecemos a crear uno, asi que manos a la obra. Como siempre, adjunto primero todo el código y luego lo explico detalladamente:
<?php
//Archivo de configuración de conexión a la base de datos
include ("conectar.php");
//Configuración de los datos
$db_tabla = "tu_tabla";
//debes indicar el link que lleva al post completo o simplemente indicar la direccion de tu sitio
$url_doc=htmlspecialchars("http://www.tusitio.com". "/post.php?idpost=");
$pg_titulo = "Aca pones un titulo que identifique a tu sitio";
$pg_link = "http://www.tusitio.com";
$pg_descripcion = "Aca una breve descripcion del sitio";
$pg_idioma = "es";
header('Content-type: text/xml; charset="iso-8859-1"', true);
echo '<?xml version="1.0" encoding="iso-8859-1"?>';?>
<rss version="2.0">
<channel>
<title><?php echo $pg_titulo; ?></title>
<link><?php echo $pg_link;?></link>
<description><?php echo $pg_descripcion;?></description>
<language><?php echo $pg_idioma;?></language>
<?php
//Selección de los artículos. Solo a manera de ejemplo. Puede que para algunos, se tenga que hacer una consulta mas compleja, involucrando mas de una tabla.
$SQL="select pb.idpost, pb.Titulo,pb.Descripcion FROM $db_tabla as pb WHERE ORDER BY pb.idpost DESC";
$rsCons = mysql_query($SQL, $conexion) or die(mysql_error());
$cantReg = mysql_num_rows($rsCons);
if ($cantReg > 0){
while ($rsReg = mysql_fetch_assoc($rsCons)){
echo "n";
echo " <item>n";
echo " <title>".$rsReg['Titulo']."</title>n";
//reemplazamos algunos caracteres y simbolos que no sean interepretados
$desc = preg_replace("/[(.*?)]/i", "", $rsReg['Descripcion']);
$desc = substr($desc,0,230);
$desc = str_replace('<','<',$desc);
$desc = str_replace("n",'',$desc);
$desc = str_replace("r",'',$desc);
echo " <description>".$desc."</description>n";
echo " <link>".$url_doc.$rsReg['idBusqueda']."</link>n";
echo " </item>n";
}
mysql_close();
}
?>
</channel>
</rss>
Vemos paso a paso lo que hicimos:
Primero lo primero y es conectarnos con el servidor para luego realizar la consulta que mostrara los datos en nuestro RSS.
include ("conectar.php");
Lo siguiente es inicializar algunas variables que utilizaremos luego para armar el RSS
$db_tabla = "tu_tabla";
//debes indicar el link que lleva al post completo o simplemente indicar la direccion de tu sitio
$url_doc=htmlspecialchars("http://www.tusitio.com". "/post.php?idpost=");
$pg_titulo = "Aca pones un titulo que identifique a tu sitio";
$pg_link = "http://www.tusitio.com";
$pg_descripcion = "Aca una breve descripcion del sitio";
$pg_idioma = "es";
Indicamos a php que lo que estamos por crear es un archivo XML:
header('Content-type: text/xml; charset="iso-8859-1"', true);
y como todo archivo XML debemos definirlo de esta manera:
echo '<?xml version="1.0" encoding="iso-8859-1"?>';?>
Los siguientes tags son necesario para que se interprete que es un RSS, más abajo muestro la estructura obligatoria que debe tener un RSS para que sea interpretado como tal.
<rss version="2.0"> <channel> <title><?php echo $pg_titulo; ?></title> <link><?php echo $pg_link;?></link> <description><?php echo $pg_descripcion;?></description> <language><?php echo $pg_idioma;?></language>
Ahora solo nos resta generar el bucle donde iremos incluyendo los post de nuestro sitio:
//Selección de los artículos
$SQL="select pb.idpost, pb.Titulo,pb.Descripcion FROM $db_tabla as pb WHERE ORDER BY pb.idpost DESC";
$rsCons = mysql_query($SQL, $conexion) or die(mysql_error());
$cantReg = mysql_num_rows($rsCons);
if ($cantReg > 0){
while ($rsReg = mysql_fetch_assoc($rsCons)){
echo "n";
echo " <item>n";
echo " <title>".$rsReg['Titulo']."</title>n";
$desc = preg_replace("/[(.*?)]/i", "", $rsReg['Descripcion']);
$desc = substr($desc,0,230);
$desc = str_replace('<','<',$desc);
$desc = str_replace("n",'',$desc);
$desc = str_replace("r",'',$desc);
echo " <description>".$desc."</description>n";
echo " <link>".$url_doc.$rsReg['idBusqueda']."</link>n";
echo " </item>n";
}
mysql_close();
}
?>
</channel>
</rss>
Y asi de esta manera con un poco de XML y con la ayuda de PHP hemos generado un RSS para nuestro sitio. En el siguiente código les dejo la estructura básica que debería tener todo RSS:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
<channel>
<title>El nombre de nuestro feed</title>
<link>Dirección web en la que se encuentre nuestro RSS</link>
<description>Contenido que vas a ofrecer a los usuarios</description>
<item>
<title>Título del artículo</title>
<link>Dirección Web a la que podemos ir para ampliar
esta información</link>
<description>Contenido de esta información</description>
</item>
</channel>
</rss>
Para hacer accesible tu canal RSS deberías poner un enlace a él desde el sitio web.
Bastará con que insertes una línea como la que se muestra a continuación en el código HTML de la página en la que quieras que aparezca el enlace:
<!--Enlace RSS--> <!--Recordar poner siempre type="application/rss+xml" en el enlace--> <a type="application/rss+xml" href="generaXML.php"> <img src="imagen que quieres que sirva de enlace.gif"> </a>
Bueno esto es todo por ahora. Espero les sea de utilidad. Ante cualquier duda o sugerencia, escribenos en los comentarios y con gusto les responderé.
Saludos Cordiales.
También te puede Interesar
¿Disfrutaste esta entrada? Por qué no dejas un comentario abajo y continúas la conversación, o te suscribes a mi feed y obtienes artículos como este enviados a tu lector de feeds.
Comentarios
Gracias Israel por pasar, un gusto poder ayudar y compartir nuestros conocimientos. Estamos en contacto. Cordiales Saludos
Muy buena info .
en breve implementare RSS en mi sitio.
Muchisimas gracias , me sirvio mucho.
Saludos.
[...] solo 5 noticias. Si les interesa crear su propio XML de noticias pueden echarle un vistazo al post, como crear un RSS para mi sitio. Espero les sea de utilidad para sus proyectos, como siempre les adjunto la DEMO y Descarga del [...]
Me parece muy interesante lo que has realizado; justamente estaba buscando algo como esto, pero me gustaria que pusieras el codigo del rss y la bd del mismo….graxias de antemano
Hola estoy pensando en crear un canal rss, para la pagina de una agencia de viajes, en verdad no tengo la mas remota ideas de como hacerlo, si alguien pudiera ayudarme y mostrarme se lo agradeceria mucho.



Hola! Interesante artículo, generando RSS directamente con acceso a datos en el mismo script. Te invito a que te pases por mi blog, http://www.israelviana.es, quizá te interese, escribo sobre PHP, usabilidad, semántica, etc. En mi último post (“el patrón Multivista”), doy algunas ideas de cómo organizar la aplicación para soportar de forma escalable diferentes “vistas”, como podría ser considerada el feed, si queremos que nuestro sitio web o blog tenga varios feeds.
Un saludo! Y te añado a mi Reader