viernes, junio 29, 2007

Google
 

Como hacer un feed rss con php

Quiza alguna vez hayais visto este logo en pequeño al lado de la dirección del navegador en firefox o en como un botoncito en el explorer,os remito a la wikipedia para la
definición, es basicamente un archivo con estructura xml, de hecho puede ser un xml, que sirve para dar un resumen de las noticias y estar suscrito al mismo, de forma que no tengamos que entrar siempre en las paginas para saber si hay alguna novedad sino simplemente ver , en mi caso con la pagina personalizada de google y el google reader, las nuevas noticias rapidamente, despues si nos interesa alguna pinchamos en el enlace que nos llevara a la pagina de la noticia.
RECETA DE RSS CON PHP y MYSQL
Una vez que sabemos un poco mas sobre rss, empezaremos a hacernos nuestro primer rss con php y base de datos mysql,
1º) Deberemos tener una base de datos mysql con una tabla noticia, los campos que no pueden faltar seran titulo, enlace o id, texto.
2º)
Vemos como es la estructura del .rss



<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
<channel>
<title>Mi titulo de pagina</title>
<link>http://www.mipagina/noticias.rss</link> <description>Todas las noticias en formato RSS desde mipagina </description>
<item>
<title>Titulo de 1º Noticia</title>
<link>Enlace a 1 noticia/link>
<description>
  descripcion de 1 Noticia</description>
</item>
<item>
<title>Titulo de 2º Noticia</title>
<link>Enlace a 2 noticia/link>
<description>
  descripcion de 2 Noticia</description>
</item>
......
</channel>
</rss>


Como vemos la estructura de etiquetas tiene un encabezado <?xml version="1.0" encoding="ISO-8859-1" ?>
el cuerpo <rss version="2.0"></rss>
y dentro de este el canal <channel></channel>
Despues viene una descripcion de todo este canal, donde normalmente pondremos de que va a tratar, por ejemplo noticias de mi sitio, eventos para el grupo etc.
A continuación vienen las etiquetas item, que como vemos son las que contendran las noticias, y que costan de 3 elementos titulo,enlace y descripcion.
3) Vamos a generar nuestro rss,



<?php
include("bd/configuracion.php");
$fp = fopen ("noticias.rss", "w+");
fwrite($fp,'<?xml version="1.0" encoding="ISO-8859-1" ?>');
fwrite($fp,"\n");
fwrite($fp,'<rss version="2.0">');
fwrite($fp,"\n");
fwrite($fp,'<channel>');
fwrite($fp,"\n");
fwrite($fp,'<title>Mis noticias </title>');
fwrite($fp,"\n");
fwrite($fp,' <link>enlace</link>');
fwrite($fp,' <description>Todas las noticias en formato RSS </description>');
fwrite($fp,"\n");
$noticias=mysql_query("SELECT * FROM noticias ORDER BY fecha DESC LIMIT 3", $link);


while($row=mysql_fetch_array($noticias)){
fwrite($fp,"<item>");
fwrite($fp,"\n");
fwrite($fp,"<title>");
$cadena=$row['titulo'];
fwrite($fp,substr(strip_tags($row["titulo"]),0,100));
fwrite($fp,"</title>");
fwrite($fp,"\n");
fwrite($fp,"<link>");
fwrite($fp,"http://www.misitio.com/noticias.php?id=".$row['id']);
fwrite($fp,"</link>");
fwrite($fp,"\n");
fwrite($fp,"<description>");
fwrite($fp,substr(strip_tags($cadena),0,450)."..");
fwrite($fp,"</description>");
fwrite($fp,"\n");
fwrite($fp,"</item>");
fwrite($fp,"\n");

}
fwrite($fp,"\n");
fwrite($fp,'</channel>');
fwrite($fp,"\n");
fwrite($fp,'</rss>');

fclose($fp);
?>



NOTAS ACLARATORIAS
Lo primero es conectarnos a nuestra base de datos, yo normalmente lo hago con un archivo aparte al que llamo mediante include.
El codigo php genera un archivo con la extension .rss, deberiamos hacer otro con la extension .xml para que el explorer lo interprete bien, hacemos un bucle while para sacar las 3 ultimas noticias, aun que podriamos aunmentar el numero, sin embargo no conviene crear archivos demasiado grandes, ademas lo importante es mostrar las ultimas noticias.Descatamos substr(strip_tags($cadena),0,450)."..") , esta linea, quita las etiquetas html para q no se produzcan errores y coge solo 450 caracteres, se podrian coger hasta 500, que es el maximo que permite el description.
4º) Ya solo nos queda poner en el HEAD de la pagina principal o donde queremos q aparezca nuestro rss.

<link rel="alternate" type="application/rss+xml" title="Myas.info - RSS" href="http://www.misitio.com/noticias.rss" />

<link rel="alternate" type="application/rss+xml" title="Myas.info - RSS" href="http://www.misitio.com/noticias.xml" />




Recordad que este codigo genera todas las etiquetas, sobreescribiendo el archivo (w+).

Etiquetas: , , , ,