Maestros del Web


Estás en Inicio / Editorial / PHP

24.01.2005

Cómo generar un feed RSS para nuestro blog o sistema de noticias

A continuación explicaré una de las formas de generar RSS para nuestros sistemas. Necesitaremos que nuestras noticias se recojan de una base de datos.

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 más que dura, pero con observación y un poco de ingenio todo se puede.

RSSEl XML a veces es complejo de entender, para mi aún lo es, pero como dije: Con ingenio todo es posible. Lo primero es saber: ¿Qué etiquetas ocupan las distintas versiones de RSS?, pues fácil, nos vamos a algún sitio que genere dichos RSS, por ejempo, un Blog y miramos el código fuente de dicho RSS. Ya tenemos aproximadamente el 90% del "trabajo" hecho, solo falta el código de nuestro documento en PHP. Hay que tener claro que el XML permite que creemos nuestras propias etiquetas, las que veremos a continuación, podemos tomarlas como standar para los feeds.

Para el ejemplo se utilizará RSS 2.0:

<? php
header('Content-Type: text/xml'); //Indicamos al navegador que es un documento en XML
echo <?xml version="1.0" encoding="iso-88859-1"?>; //Versión y juego
de carácteres de nuestro documento
//Aquí la conexión o archvio de conexión 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 artículo en 300 caracteres para nuestra descripción
$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>Descripción 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. Básicamente 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 práctica sana es utilizar la etiqueta <content:encoded> , para proporcionar la información que contiene nuestro artículo completo en vez de <description> ¿por qué?, porque los sistemas de recopilación de feeds o lectura de estos, leen la etiqueta <description> para darle al lector un resúmen de lo que trata el post. Lo menciono, porque hay sistemas de blog que usan <description> para generar la información del artículo completo y no dan la opción de ver si queremos o no seguir leyéndo lo que nos ofrecen, aparte de ocupar espacio. Para estas dos etiquetas usamos la sección XML <![CDATA]]> (character data), básicamente 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 más opciones (aunque esto es lo básico), como por ejemplo: Hacer un while luego de <item> y mostrar todas las noticias, o la cantidad que quieras, usándo limit en la llamada a la base.

Es todo por ahora, espero lo disfruten.

Enlaces de interés:

Califica esta nota:

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 votos, promedio: 4 de 5)
Loading ... Loading ...

Si eres nuevo en Maestros del Web y te agradan nuestras publicaciones, te invitamos a suscribirte a nuestro Feed.

Sindícanos en: Google Reader, Bloglines, My Yahoo o My MSN | ¿Qué es el Feed?

Comentarios

33 comentarios en total.

  1. Rer 21.05.2005 - 13:00 - #

    Hola he generado el rss para mi web pero sólo consigo que me muestre una noticia. He probado lo del while pero no me da resultado. A lo mejor lo pongo en el sitio equivocado. A ver si me podriáis echar una mano.

  2. El_derby 26.05.2005 - 19:32 - #

    :arriba: muy interesante

  3. cvander 09.06.2005 - 13:02 - #

    Luego de generar un Feed, les recomiendo que incluyan un link visible en su sitio web y de ser posible links hacia los principales servicios que recogen feeds:

    http://www.feedness.com/alta/www.maestrosdelweb.com/index.xml
    http://www.bloglines.com/sub/www.maestrosdelweb.com/index.xml
    http://www.feedmania.com/suscribe_feed.php?url=www.maestrosdelweb.com/index.xml
    http://www.newsgator.com/ngs/subscriber/subext.aspx?url=www.maestrosdelweb.com/index.xml
    http://add.my.yahoo.com/rss?url=http://www.maestrosdelweb.com/blog/index.xml

  4. No Registrado 01.12.2005 - 11:13 - #

    Rer, Hola he generado el rss para mi web pero sólo consigo que me muestre una noticia. He probado lo del while pero no me da resultado. A lo mejor lo pongo en el sitio equivocado. A ver si me podriáis echar una mano.

    A mi me pasa lo mismo.
    Saludos

  5. No Registrado 06.03.2006 - 08:04 - #

    En base a este codigo, tuve que hace unas modificaciones y este es el resultado que funciona:

    < ?php
    include_once(’configuracion.php’);
    mysql_select_db($dbname, $conexion);
    $query_noticias = “SELECT * FROM noticias ORDER BY id”;
    $noticias = mysql_query($query_noticias, $conexion) or die(mysql_error());
    header(’Content-Type: text/xml’);
    echo ‘< ?xml version="1.0" encoding="ISO-8859-1" ?>

    url
    ‘;

    while($row_noticias = mysql_fetch_array($noticias))
    {
    $fecha = explode(”-”, $row_noticias[”fecha”]);
    $horaunix = strtotime($fecha[1].”/”.$fecha[2].”/”.$fecha[0].” 00:00:00″);
    echo’

    noticias.php?id=’.$row_noticias[”id”].’
    < ![CDATA['.nl2br(stripslashes($row_noticias["encabezado"])).']]>
    ‘.date(”D”,$horaunix).’, ‘.date(”d”,$horaunix).’ ‘.date(”M”,$horaunix).’ ‘.date(”Y”,$horaunix).’ 00:00:00 -0400‘;
    }
    echo ‘
    ‘;
    mysql_close();
    ?>

    Es importante que se agregue

  6. Mickel 07.03.2006 - 10:52 - #

    gracias! ha quedado bastante bien…

  7. Anarninquë 30.03.2006 - 17:05 - #

    Una pregunta, ¿cómo es el tema legal de RSS? ¿es legal que yo ponga noticias desde otras webs?

    agradezco la info…

    salu2

  8. jam1138 30.03.2006 - 17:41 - #

    ¿es legal que yo ponga noticias desde otras webs?

    Depende de las políticas de cada sitio… Reviza en los pies de páginas, es probable que ahí venga bajo que condiciones tienes permitido usar sus fuentes RSS (y todo el contenido en general).

    :adios:

  9. Slaider 13.04.2006 - 10:18 - #

    y si mis noticias no estan en una base de datos? las quiero coger de un periodico, tengo el link del .xml me pueden dar algun script?

  10. jam1138 13.04.2006 - 23:16 - #

    y si mis noticias no estan en una base de datos? las quiero coger de un periodico

    El artículo habla de cómo crear una fuente RSS, no de leerla ;-).

    tengo el link del .xml me pueden dar algun script?

    Este tipo de preguntas quedan mejor en el foro de Aplicaciones Prefabricadas, de cualquier manera, puedes buscar por acá: http://hotscripts.com/PHP/Scripts_and_Programs/XML_and_PHP/index.html

    Suerte! :adios:

  11. subirol 27.04.2006 - 09:47 - #

    No Registrado, En base a este codigo, tuve que hace unas modificaciones y este es el resultado que funciona:

    < ?php
    include_once(’configuracion.php’);
    mysql_select_db($dbname, $conexion);
    $query_noticias = “SELECT * FROM noticias ORDER BY id”;
    $noticias = mysql_query($query_noticias, $conexion) or die(mysql_error());
    header(’Content-Type: text/xml’);
    echo ‘< ?xml version="1.0" encoding="ISO-8859-1" ?>

    url
    ‘;

    while($row_noticias = mysql_fetch_array($noticias))
    {
    $fecha = explode(”-”, $row_noticias[”fecha”]);
    $horaunix = strtotime($fecha[1].”/”.$fecha[2].”/”.$fecha[0].” 00:00:00″);
    echo’

    noticias.php?id=’.$row_noticias[”id”].’
    < ![CDATA['.nl2br(stripslashes($row_noticias["encabezado"])).']]>
    ‘.date(”D”,$horaunix).’, ‘.date(”d”,$horaunix).’ ‘.date(”M”,$horaunix).’ ‘.date(”Y”,$horaunix).’ 00:00:00 -0400‘;
    }
    echo ‘
    ‘;
    mysql_close();
    ?>

    Es importante que se agregue < ![CDATA[ en el comienzo de la informacion pues sin esto no se desplegaba la noticia. Ademas le agregue la fecha de la noticia, espero les aclare las dudas.

    me podiais esplicar donde hai que meter esta codigo para que el navegador lea el rss, es que e provado varias cosas y a lo masimo que llego es a q me de un error el firefox que no se de donde viene.
    Muchas gracias.

  12. Natalia 01.06.2006 - 04:46 - #

    Quería generar un rss para una web pero me gustaría saber si después a medida que las noticias cambien tendría que actualizarlo yo, o se actualiza automaticamente al hacer los cambios pertinentes en la web.

  13. tincho 26.10.2006 - 17:37 - #

    En el codigo tenes varios errores, por ejemplo el CDATA la falta un [corchete y no me acuerdo qe mas

    // http://localhost/ //

  14. tincho 26.10.2006 - 17:40 - #

    En el codigo tenes varios errores, por ejemplo el CDATA la falta un [corchete y no me acuerdo qe mas, ah si que la fecha deberia ser RFC 2822 ( date(”r”, strtotime($row[fecha])) ) igual me re sirvio gracias

    // http://localhost/ //

  15. Paola 09.12.2006 - 16:17 - #

    Gracias para este interesante tutorial, pienso de insertarlo entre la colección de tutorial del mi neuvo sitio que si te hace agrada

  16. micaela 05.01.2007 - 05:16 - #

    tengo el codigo hecho
    ahora…que hago con el : S

  17. Sergio 13.01.2007 - 19:55 - #

    Ojala alguna alma caritativa me pudiera ayudar con el feed demi Blog, pues tras el upgrade de Wordpress dejó de funcionar, ayuda!!

  18. alvaro 28.01.2007 - 16:14 - #

    cualquiera que sepa un poco de php sabe que este codigo es una mierda tiene errores por todas partes. estoy contigo carlos, MUY FLOJO.

  19. pau guerrero 10.02.2007 - 09:37 - #

    http://www.watercenter.es
    piscinas, piscinas desmontables, limpiafondos piscinas, bombas presion, descalcificador piscinas, saunas piscinas, bañeras hidromasaje, spas, piscinas acero, regulador ph, equipos sal, esterilizador agua, recambios piscinas, filtros piscinas, grupos agua presion, construcciones piscinas, watercenter, accessories piscinas, tratamientos piscinas, productos piscina, fabricacion piscinas, piscinas madera, bombas sumergibles, bombas centrifugas, bombas
    mantenimiento piscinas, rehabilitacion piscinas, piscinas prefabricadas, piscinas acero, piscinas obra, piscinas fibra, tratamiento agua, piscinas madera, cobertores piscinas, enrolladores piscinas, rayos uva

  20. tienda piscinas y acessor 10.02.2007 - 09:38 - #

    http://www.watercenter.ws
    piscinas, piscinas desmontables, limpiafondos piscinas, bombas presion, descalcificador piscinas, saunas piscinas, bañeras hidromasaje, spas, piscinas acero, regulador ph, equipos sal, esterilizador agua, recambios piscinas, filtros piscinas, grupos agua presion, construcciones piscinas, watercenter, accessories piscinas, tratamientos piscinas, productos piscina, fabricacion piscinas, piscinas madera, bombas sumergibles, bombas centrifugas, bombas
    mantenimiento piscinas, rehabilitacion piscinas, piscinas prefabricadas, piscinas acero, piscinas obra, piscinas fibra, tratamiento agua, piscinas madera, cobertores piscinas, enrolladores piscinas, rayos uva

  21. huilfred 13.02.2007 - 16:33 - #

    hola

  22. webcam 14.02.2007 - 08:22 - #

    Webcam gratis

  23. heinz 14.02.2007 - 16:08 - #

    chau

  24. Reparacion centralitas 01.10.2007 - 03:09 - #

    Gran documento. Gracias.

  25. Peluqueria Alicante 02.10.2007 - 06:11 - #

    Merci

  26. Reyvi 03.10.2007 - 14:57 - #

    Hola me parece muy bueno este sistema, pues lo hice para mi sitio y me trabajó a las mil maravillas, pero solo en el servidor local, pues cuando lo subo al www via ftp y lo ejecuto me da el siguiente error:

    No se puede mostrar la página XML
    No se puede ver la entrada XML con la hoja de estilo . Corrija el error y haga clic en el botón Actualizar, o inténtelo de nuevo más tarde.
    ——————————————————
    El documento XML debe tener un elemento de nivel superior. Error al procesar el recurso http://www.radiosantacruz.co.cu/rss_xml.php

    Una ayudita me vendría muy bien. Salu2
    Reyvi

  27. centralita 26.10.2007 - 09:33 - #

    Hola. Me va perfecto pero solo en modo local. Cuando la subo al servidor se queda esperando y al final me da error y no me muestra las noticias. Lo fuerte que he probado un moton de lectores de feeds rss y me ocurre lo mismo habiendo probado en diferentes dominios. ¿Os ha ocurrido algo parecido a vosotros?
    Saludos.

  28. Saúl 28.10.2007 - 00:24 - #

    Hola, esta muy bien como introducción, muchas gracias por tomarte el tiempo de escribir y compartir esta información, a los tipos que critican el código qué les pasa???, nadie los obloga a hacer copy & paste, reescriban sus propios scripts y dejen de chingar, bola de imbéciles

  29. Yeengo 10.12.2007 - 11:30 - #

    Hola, soy el webmaster de YeenGO y la verdad no tengo muchos conocimientos informáticos, si a alguno le interesase ayudarme a crear feeds con la web y colaborar conmigo, por favor, ponte en contacto conmigo en yeengo@yeengo.com. Gracias

  30. presupuesto mudanzas 22.01.2008 - 06:58 - #

    Vamos a implementarlo a ver si funciona.

  31. Carlos 06.03.2008 - 05:47 - #

    Saúl, si andas estreñido míratelo, no sea que te vaya a salir una almorrana en la boca

  32. amador 26.03.2008 - 16:04 - #

    muy util, gracias.

  33. Barsuk 07.05.2008 - 21:33 - #

    Yes, you can see more about this here:,

Trackbacks

1 trackbacks en total.

  1. Globosfera ? » Feeds
Deja tu Comentario


Maestros del Web se reserva el derecho de moderación de los comentarios. Evita utilizar palabras soeces, ataques directos, descalificativos, insultos, de lo contrario tu comentario será eliminado.


Boletín

Agrega nuestro feed a  Netvibes
wikio Add to Technorati Favorites

-


Maestros del Web es el punto de encuentro para los entusiastas de la red.

© Copyright 1997 - 2008 Maestros del Web. | CMS: Wordpress