11 de mayo de 2013

Tutorial para crear un feed RSS

Ahora mismo los feeds tienen una gran importancia para los sitios Web, nos permite poder informar de las actualizaciones de contenidos... En especial nos hemos dado cuenta que al realizar nuestra app, que por cierto, esta en versión beta, hemos tenido que hacer varios feeds RSS. Sin más preámbulos, empecemos:

Lo primero de todo es un sitio Web con contenido, ya sea estático o dinámico. Un editor Web. Si bien no es necesario y podemos codificar mediante bloc de notas, si es recomendable. Nosotro hemos utilizado Adobe Dreamweaver, el cual pueden obtenerlo desde el siguiente enlace.

Para crear un feed RSS, es necesario codificar un archivo en formato XML, el cual contiene las etiquetas necesarias para interpretar y desplegar el contenido en el formato especificado, al cual accederán los usuarios. Este archivo podemos dejarlo nativo en XML, o bien incrustarlo dentro de PHP, como veremos en ámbos casos a continuación.


Para crear un feed dinámico, consideraremos que tenemos una base de datos, la cual tiene una tabla de noticias con un campo título, un campo enlace, un campo detalle y un campo de fecha de las noticias, tal como vemos a continuación:

[table id=1 /]

Entonces, lo primero que debemos hacer es crear un archivo PHP en nuestro editor Web, el que tendrá una estructura como la que sigue:




<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
    <title>Noticias de mi fantabulenial sitio Web</title>
    <link>http://www.ejemplo.com</link>
    <description>Las mejores noticias de Internet</description>
<?php
   ...
?>
</channel>
</rss>


Como podrán ver, en el código anterior dejamos una sección en blanco, entre las etiquetas <?php y ?>. Esta parte del código es donde nos conectaremos a la base de datos, rescataremos las noticias y las desplegaremos dinámicamente. Para esto, primero haremos la conexión a la base de datos. Como buena práctica utilizaremos DEFINE para, valga la redundancia, definir los datos de conexión, pero si quieren pueden saltarse esta parte y ejecutar la función directamente:


  1. DEFINE ('USUARIO_BD''el nombre de usuario de la bd');  
  2. DEFINE ('CLAVE_BD''la clave de acceso a la bd');  
  3. DEFINE ('HOST_BD''el servidor de la bd');  
  4. DEFINE ('NOMBRE_BD''el nombre de la base de datos'); 




Y ahora hacemos la conexión:

  1. $conexion = mysql_connect(HOST_BD, USUARIO_BD, CLAVE_BD) or  
  2. die ('No se pudo conectar a la BD');  
  3. mysql_select_db(NOMBRE_BD) or die ('No se pudo seleccionar 
  4. la BD'); 

Ejecutamos la consulta:

  1. $consulta = "SELECT * FROM noticias ORDER BY fecha DESC";  
  2. $resultado = mysql_query($consultaor die ('Error al 
  3. ejecutar la consulta'); 
Ahora que hemos recobrado todas las noticias desde la base de datos de forma ordenada por la fecha, obteniendo primero las más nuevas, las pasaremos a un array para escribirlas en el formato especificado de XML, de la siguiente forma:

  1. while ($fila = mysql_fetch_array($resultado, MYSQL_ASSOC){  
  2.     echo '<item> 
  3.                  <title>'.$fila['titulo'].'</title> 
  4.                  <link>'.$fila['enlace'].'</link> 
  5.                  <description>'.$fila['detalle'].'</description> 
  6.           </item>';  
  7. }  



Con lo anterior, ejecutamos un ciclo que pasará a un array de forma asociativa (gracias al parámetro MYSQL_ASSOC, el cual nos permitirá acceder a los registros en el array con el mismo nombre que tienen en la tabla de la base de datos) cada noticia hasta que se acaben y creará un nuevo ítem con los respectivos valores para incluir en el feed.

Con eso estamos casi listos, el último detalle es añadir un pequeño encabezado al comienzo del documento, indicando que estamos ejecutando contenido XML para un mejor reconocimiento al momento de ejecutar el script completo, esto lo hacemos añadiendo al comienzo:

  1. <?php  
  2.       header("Content-Type: application/rss+xml; charset="utf-8");  
  3. ?>  

Con esto, nuestro código completo queda de la siguiente forma:

  1. <?php  
  2.       header("Content-Type: application/rss+xml; charset=utf-8");  
  3. ?>  
  4.   
  5. <?xml version="1.0" encoding="utf-8"?>  
  6. <rss version="2.0">  
  7. <channel>  
  8.     <title>Noticias de mi fantabulenial sitio Web</title>  
  9.     <link>http://www.ejemplo.com</link>  
  10.     <description>Las mejores noticias de Internet</description>  
  11.   
  12. <?php  
  13.   
  14.     DEFINE ('USUARIO_BD''el nombre de usuario de la bd');  
  15.     DEFINE ('CLAVE_BD''la clave de acceso a la bd');  
  16.     DEFINE ('HOST_BD''el servidor de la bd');  
  17.     DEFINE ('NOMBRE_BD''el nombre de la base de datos');  
  18.   
  19.     $conexion = mysql_connect(HOST_BD, USUARIO_BD, CLAVE_BD) or  
  20.     die ('No se pudo conectar a la BD');  
  21.     mysql_select_db(NOMBRE_BD) or die ('No se pudo seleccionar 
  22.     la BD');  
  23.   
  24.     $consulta = "SELECT * FROM noticias ORDER BY fecha DESC";  
  25.     $resultado = mysql_query($consultaor die ('Error al 
  26.     ejecutar la consulta');  
  27.   
  28.     while ($fila = mysql_fetch_array($resultado, MYSQL_ASSOC){  
  29.         echo '<item> 
  30.                   <title>'.$fila['titulo'].'</title> 
  31.                   <link>'.$fila['enlace'].'</link> 
  32.                   <description>'.$fila['detalle'].'</description> 
  33.              </item>';  
  34.     }  
  35. ?>  
  36.   
  37. </channel>  
  38. </rss> 


¡Y listo!. Tenemos nuestro feed RSS dinámico, el cual añadirá los resultados obtenidos desde la base de datos y cada vez que publiquemos contenido nuevo se actualizará automáticamente.

Descargate ya la versión Beta de este Blog: APK Recuerda que la tendrás que abrir este enlace desde el navegador de tu movil.  

No hay comentarios:

Publicar un comentario