Crear RSS con PHP

0
26559

Cómo generar archivos RSS con PHP

En Autentia
nos gusta profundizar en aquellos aspectos que agilicen la gestión
de un sitio web. En este sentido, es importante, por ejemplo,
mantener un buen servicio de notificaciones a los usuarios.

1. Introducción a RSS (Really Simple Sindication)

RSS es el acrónimo de Really Simple Syndication o
sindicación realmente simple. Una sindicación es fuente
de contenidos (información estructurada) que ofrecemos a
múltiples destinatarios. Los ficheros RSS utilizados por esta
sindicación son ficheros XML con una estructura concreta (que
definimos más adelante). Para más información
sobre RSS, sugerimos el siguiente tutorial.

Cada día hay más Web de noticias, bitácoras
personales (blogs), Webs personales, etc. con contenidos interesantes
que nos gustaría consultar pero que por falta de tiempo y
organización no llegamos a ver. Muchos de estos Webs han
decidido ofrecer sus contenidos, sino completos al menos los
titulares, en el formato RSS, de tal modo que, a través de
lectores RSS podemos sencillamente encendiendo el programa, hacer una
consulta a nuestros Webs favoritos y de un modo unificado, tener la
posibilidad de echar un vistazo preliminar e incluso ir al Web
original para ampliar aquellas informaciones de nuestro interés.

 

2. Estructura de un feed RSS

Un documento RSS es un documento XML que sigue una estructura
predeterminada muy sencilla («Really Simple» sindicación).
Podemos dividirlo en dos apartados:

    <channel>: contiene los
datos del blog y de la Web propietaria de éste; contiene todos
los objetos o items
a mostrar. Es obligatorio rellenar los
campos.

    <item>: cada item
contiene todos los datos asociados a ese item llena con los datos de
nuestro blog o web, luego bajo la etiqueta mencionada van los datos
del post o noticia a mostrar.

El siguiente documento define un feed para las novedades de la Web de Autentia:

<?xml version=”1.0″?>
<;rss version=”2.0″>
  <channel>
    <title>Noticias de Autentia</title>
    <link>http://www.autentia.com/</link>
    <description>Feed RSS de noticias de Autentia</description>
    <language>es-es</language>
    <pubDate>Tue, 10 Dec 2005 12:00:00 GMT</pubDate>
    <lastBuildDate>Tue, 14 Mar 2006 12:14:00 GMT</lastBuildDate>
    <managingEditor>editor@ejemplo.com</managingEditor>
    <webMaster>webmaster@ejemplo.com</webMaster>

    <item>
      <title>Nueva presentación de Autentia</title>
      <link>http://www.autentia.com/autentiaofrece.pdf</link>
      <description>Archivo en formato PDF con la presentación de los servicios que ofrece Autentia</description>
      <pubDate>Tue, 19 Jan 2006 11:42:21 GMT</pubDate>
    </item>
    <item>
      <title>Nueva sección de descargas en Autentia</title>
      <link>http://www.autentia.com/descargas/</link>
      <description>Ahora puede descargarse nuestra presentación estándar corporativa en formato .PPT</description>
      <pubDate>Fri, 26 Dic 2005 10:06:42 GMT</pubDate>
    </item>
  </channel>
</rss>

 

3. Programando rss.php

El objetivo del programa es el de crear un programa en PHP que
genere de forma dinámica un documento XML con los últimos
datos actualizados en la base de datos (en el caso de este ejemplo,
los últimos tutoriales publicados); de esta forma, conforme
actualicemos la base de datos, también los documentos RSS
estarán actualizados.

Nuestro programa PHP en concreto es muy sencillo: primero
establace la conexión con la base de datos y realiza la/s
consulta/s que haya que hacer; si hubiera algún problema, la
página devolverá un error antes de empezar a generar el
archivo XML.

<?
  $con = mysql_connect(“localhost”,”adictospruebas”,”xxxxx”) or die (“Imposible conectar con la base de datos”);
  $res = mysql_select_db(“adictosa_adictosacom”) or die (“No se encontro la base de datos”);

  $sqlquery = “select * from tutoriales where t_novedad=1″;
  $resultado = mysql_query($sqlquery) or die(“error al ejecutar consulta”);

…

Lo siguiente es definir el fichero a desarrollar como un documento
XML. Por ello es necesario añadir las siguientes dos líneas.

…
  header(‘Content-Type: text/xml’);
  echo ‘<?xml version=”1.0″ encoding=”iso-8859-1″ ?>';

…

Ya podemos empezar a construir el RSS: en este ejemplo optamos por
rellenar el canal con información estática.

…
  echo ‘<rss version=”2.0″>
  <channel>
    <title>Ultimos Tutoriales</title>
    <link>https://adictosaltrabajo.com/</link>
    <description>Ultimos tutoriales expuestos en AdictosAlTrabajo</description>
    <language>es-ES</language>';
…

Es a la hora de definir los items cuando utilizamos un bucle en
PHP para cargar los resultados de la consulta en los diferentes
campos del documento.

…
    // creamos documento si existen tutoriales nuevos
    while ($fila = mysql_fetch_array($resultado)) { 
    echo ‘<item>
      <title>’ . $fila[“t_titulo”] . ‘</title>
      <description>’ . $fila[“t_descripcion”] . ‘</description>
      <link>https://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=’ . $fila[“t_enlace”] . ‘</link>
  </item>';
  }
  echo ‘</channel></rss>';
?>
…

A continuación presentamos el ejemplo completo:

<?
  $con = mysql_connect(“localhost”,”base_de_adictos”,”XXXXXXXX”) or die (“Imposible conectar con la base de datos”);
  $res = mysql_select_db(“base_de_datos_1″) or die (“No se encontro la base de datos”);

  $sqlquery = “select * from tutoriales where nuevo=1″;
  $resultado = mysql_query($sqlquery) or die(“error al ejecutar consulta”);

  header(‘Content-Type: text/xml’);
  echo ‘<?xml version=”1.0″ encoding=”iso-8859-1″ ?>';

  echo ‘<rss version=”2.0″>
  <channel>
    <title>Ultimos Tutoriales</title>
    <link>https://adictosaltrabajo.com/</link>
    <description>Ultimos tutoriales expuestos en AdictosAlTrabajo</description>
    <language>es-ES</language>';

    // creamos documento si existen tutoriales nuevos
    while ($fila = mysql_fetch_array($resultado)) { 
    echo ‘<item>
      <title>’ . $fila[“t_titulo”] . ‘</title>
      <description>’ . $fila[“t_descripcion”] . ‘</description>
      <link>https://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=’ . $fila[“t_enlace”] . ‘</link>
  </item>';
  }
  echo ‘</channel></rss>';
?>

Y ya tenemos un archivo RSS:

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad