You are on page 1of 4

Crear un Sistema RSS en PHP para Publicar la Informacin

Muchas veces nos hemos preguntado como generar feed RSS para nuestros blogs o sistema de noticias. Al igual que muchos, yo pensaba que era una tarea ms que dura, pero con observacin y un poco de ingenio todo se puede. A continuacin explicar una de las formas de generar RSS para nuestros sistemas. Necesitaremos que nuestras noticias se recojan de una base de datos. El XML a veces es complejo de entender, para mi aun lo es, pero como dije: Con ingenio todo es posible. Lo primero es saber: Qu etiquetas ocupan las distintas versiones de RSS?, pues fcil, nos vamos a algn sitio que genere dichos RSS, por ejempo, un Blog y miramos el cdigo fuente de dicho RSS. Ya tenemos aproximadamente el 90% del trabajo hecho, solo falta el cdigo de nuestro documento en PHP. Hay que tener claro que el XML permite que creemos nuestras propias etiquetas, las que veremos a continuacin, podemos tomarlas como standar para los feeds. Para el ejemplo se utilizar RSS 2.0: <? header(Content-Type: text/xml); //Indicamos al navegador que es un documento en XML //Versin y juego de carcteres de nuestro documento echo <?xml version=1.0 encoding=iso-88859-1?>; //Aqu la conexin o archivo de conexin a la base de datos //Hacemos la consulta y la ordenamos por post para mostrar siempre el ltimo $resultado=mysql_query(select * from noticias order by id_post Desc,$link); $row=mysql_fetch_array($resultado); //Cortaremos el artculo en 300 caracteres para nuestra descripcin $descripcion=substr($row[articulo],0,300).; // Y generamos nuestro documento echo <rss version=2.0> <channel> <title>Nombre de nuestro blog o web</title> <link>http://www.miurl.com/</link> <language>es-CL</language> <description>Descripcin de nuestro blog o web</description> <generator>Autor del RSS</generator> <item> <title>.$row[titulo].</title> <link>http://www.miurl.com/noticias.php?id=.$row[id_post].</link>

<comments>http://www.miurl.com/comentarios.php?id=.$row[id_post]. </comments> <pubDate>.$row[fecha].</pubDate> <category>.$row[categoria].</category> <guid>http://www.miurl.com/comentarios.php?id=.$row[id_post].</guid> <description><![CDATA['.$descripcion.']]></description> <content:encoded><![CDATA['.$row[articulo].]]></content:encoded> </item></channel></rss>; ?> Podemos ver que la estructura del documento es sencilla y hasta repetitiva. Bsicamente podemos dividirlo en dos: <channel> e <item> en donde <channel> contiene a <item>. El primer bloque antes de <item> se llena con los datos de nuestro blog o web, luego bajo la etiqueta mensionada van los datos del post o noticia a mostrar Una prctica sana es utilizar la etiqueta <content:encoded>, para proporcionar la informacin que contiene nuestro artculo completo en vez de <description> por qu?, porque los sistemas de recopilacin de feeds o lectura de estos, leen la etiqueta <description> para darle al lector un resmen de lo que trata el post. Lo menciono, porque hay sistemas de blog que usan <description> para generar la informacin del artculo completo y no dan la opcin de ver si queremos o no seguir leyendo lo que nos ofrecen, aparte de ocupar espacio. Para estas dos etiquetas usamos la seccin XML<![CDATA]]>(character data), bsicamente para que el XML no interprete ciertos caracteres como propios de su lenguaje y trate de ejecutarlos. Por ltimo decirles, que deben cerrar bien todas las etiquetas del documento o noticia a la que se le har feed, o dar un hermoso error de parseo. En cuanto al script, se le pueden dar ms opciones (aunque esto es lo bsico), como por ejemplo: Hacer un while luego de <item> y mostrar todas las noticias, o la cantidad que quieras, usndo limit en la llamada a la base.

Crear un RSS en PHP


RSS es un lenguaje desarrollado para todo tipo de sitios que se

actualicen con frecuencia y por medio del cual se puede compartir la informacin y usarla en otros sitios web o programas. Este lenguaje se escribe en XML en un formato especifico que es estndar. Sea que tenemos en nuestra base de datos MySQL un tabla que contiene las noticias de nuestra pgina web. Lo que haremos ser consultar las ultimas 10 noticias de esta tabla y las escribiremos en un XML con el formato estndar para ser un RSS.
1. <? 2. // Definimos variables globales 3. $rss_titulo = 'myweb News'; 4. $rss_url = 'http://myweb.com'; 5. $rss_descripcion = 'Noticias de myweb.com'; 6. $rss_email = 'email@myweb.com'; 7. 8. // Parametros de conexion a MySQL 9. $db_server = 'localhost'; 10. $db_user = 'usuario'; 11. $db_pass = 'contrasena'; 12. 13. // Conexion a la base de datos 14. $conexion = mysql_connect($db_server,$db_user,$db_pass); 15. mysql_select_db("basedatos", $conexion); 16. 17. $sql = "SELECT * FROM noticias"; 18. $result = mysql_query($sql, $conexion); 19. $item = mysql_fetch_assoc($result) 20. 21. // Header para escribir XML 22. header('Content-type: text/xml; charset="iso-8859-1"', true); 23. 24. // Escribimos el archivo RSS 25. echo '<?xml version="1.0" encoding="iso-8859-1"?>'; 26. echo 27. '<rss version="0.92"> 28. <channel> 29. <docs>http://blog.unijimpe.net/rss</docs> 30. <title>'.$rss_titulo.'</title> 31. <link>'.$rss_url.'</link> 32. <description>'.$rss_descripcion.'</description>

33. <language>es</language> 34. <managingEditor>'.$rss_email.'</managingEditor> 35. <webMaster>'.$rss_email.'</webMaster> 36. '; 37. 38. do { 39. echo "<item>" ; 40. echo "<title>$item['titulo']</title>" ; 41. echo "<link>".$rss_url."?id=".$item['id']."</link>"; 42. echo "<description>".$item['contenido']."</description>"; 43. echo "</item>"; 44. } while ($item = mysql_fetch_assoc($result)); 45. 46. echo "</channel>"; 47. echo "</rss>"; 48. ?> Con esto ya hemos generado nuestro XML con el formato RSS, el siguiente paso es colocar un enlace y leerlo en cualquier Lector de Feeds. Como comentario adicional puedes colocar un tag HTML a tu

pgina para indicarle que tu web tiene asociado un RSS, esto se hace con el tag link en le header de tu HTML donde se coloca la ruta de tu archivo RSS.
1. <link rel="alternate" type="text/xml" 2. title="RSS .92" href="http://myweb.com/rss.php" />

You might also like