loading..........
bueno todo desde cero.
Objetivo: vamos a generar un RSS 2.0
Imagino que la forma en que muestras tus articulos y/o noticias es de la siguiente manera.
Código PHP:
/*
se entiende que ya hiciste conexion a tu base de datos
*/
$a=mysql_query("SELECT * FROM mi_tabla_articulos");
Esto te devolverà
noticia 1 autor=chapulin
la noticia dice que bla bla bla
--------------------------------
noticia 2 autor=chapulin
la noticia dice que bla bla bla
-----------------------------
noticia 3 autor=chapulin
la noticia dice que bla bla bla
Entonces esas salidas vamos a ponerlas como ITEMS un item es lo que RSS toma como el cuerpo de RSS
<item>algo 1</item>
<item>algo 2</item>
<item>algo 3</item>
ahì tenemos 3 items, es ahì a donde tenemos que llegar
para eso vamos a crear una funcion para no liarnos.
1.- guardamos la consulta en una variable
Código PHP:
$_to_rss=mysql_query("SELECT * FROM tabla_de_noticias ORDER BY ID DESC LIMIT 100");
nada mas, ahora creamos la funcion
Código PHP:
//aunque es poco recomendado pondremos todas las etiquetas que correspondan
//y asì hacer manejable el RSS casi al 100%
function rss_enviar($_rss_query,$title)
{
$_rss="<?xml version="1.0\" encoding=\"utf-8\"?>\n";
$_rss.="<rss version=\"2.0\" \n";
$_rss.=" xmlns:admin=\"http://webns.net/mvcb/\"\n";
$_rss.=" xmlns:ag=\"http://purl.org/rss/1.0/modules/aggregation/\"\n";
$_rss.=" xmlns:atom=\"http://purl.org/atom/ns\"\n";
$_rss.=" xmlns:annotate=\"http://purl.org/rss/1.0/modules/annotate/\"\n";
$_rss.=" xmlns:audio=\"http://media.tangent.org/rss/1.0/\"\n";
$_rss.=" xmlns:blogChannel=\"http://backend.userland.com/blogChannelModule\"\n";
$_rss.=" xmlns:cc=\"http://web.resource.org/cc/\"\n";
$_rss.=" xmlns:company=\"http://purl.org/rss/1.0/modules/company\"\n";
$_rss.=" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"\n";
$_rss.=" xmlns:cp=\"http://my.theinfo.org/changed/1.0/rss/\"\n";
$_rss.=" xmlns:creativeCommons=\"http://backend.userland.com/creativeCommonsRssModule\"\n";
$_rss.=" xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n";
$_rss.=" xmlns:dcterms=\"http://purl.org/dc/terms/\"\n";
$_rss.=" xmlns:email=\"http://purl.org/rss/1.0/modules/email/\"\n";
$_rss.=" xmlns:ev=\"http://purl.org/rss/1.0/modules/event/\"\n";
$_rss.=" xmlns:geo=\"http://www.w3.org/2003/01/geo/wgs84_pos#\"\n";
$_rss.=" xmlns:geourl=\"http://geourl.org/rss/module/\"\n";
$_rss.=" xmlns:icbm=\"http://postneo.com/icbm\"\n";
$_rss.=" xmlns:image=\"http://purl.org/rss/1.0/modules/image/\"\n";
$_rss.=" xmlns:itunes=\"http://www.itunes.com/DTDs/Podcast-1.0.dtd\"\n";
$_rss.=" xmlns:l=\"http://purl.org/rss/1.0/modules/link/\"\n";
$_rss.=" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\"\n";
$_rss.=" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n";
$_rss.=" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\"\n";
$_rss.=" xmlns:ref=\"http://purl.org/rss/1.0/modules/reference/\"\n";
$_rss.=" xmlns:reqv=\"http://purl.org/rss/1.0/modules/richequiv/\"\n";
$_rss.=" xmlns:rss091=\"http://purl.org/rss/1.0/modules/rss091#\"\n";
$_rss.=" xmlns:search=\"http://purl.org/rss/1.0/modules/search/\"\n";
$_rss.=" xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\"\n";
$_rss.=" xmlns:ss=\"http://purl.org/rss/1.0/modules/servicestatus/\"\n";
$_rss.=" xmlns:str=\"http://hacks.benhammersley.com/rss/streaming/\"\n";
$_rss.=" xmlns:sub=\"http://purl.org/rss/1.0/modules/subscription/\"\n";
$_rss.=" xmlns:sy=\"http://purl.org/rss/1.0/modules/syndication/\"\n";
$_rss.=" xmlns:taxo=\"http://purl.org/rss/1.0/modules/taxonomy/\"\n";
$_rss.=" xmlns:thr=\"http://purl.org/rss/1.0/modules/threading/\"\n";
$_rss.=" xmlns:wiki=\"http://purl.org/rss/1.0/modules/wiki/\"\n";
$_rss.=" xmlns:xhtml=\"http://www.w3.org/1999/xhtml\">\n";
$_rss.="<channel>\n";
$_rss.="<title>".rss_encoding($title)."</title>\n";
$_rss.="<link>http://tuweb.com/</link>\n";
$_rss.="<description>Sistema Leimnud</description>\n";
$_rss.="<docs>http://backend.userland.com/rss</docs>\n";
$_rss.="<generator>Leimnud RSS Creator</generator>\n";
$_rss.="<copyright>maborak.design</copyright>\n";
$_rss.="<webMaster>[email protected]</webMaster>\n";
$_rss.="<dc:language>en-us</dc:language>\n";
$_rss.="<dc:creator>Me ([email protected])</dc:creator>\n";
$_rss.="<dc:rights>Copyright 2005 Me</dc:rights>\n";
$_rss.="<dc:date>".date("Y-m-d")."</dc:date>\n";
$_rss.="<admin:generatorAgent rdf:resource=\"http://www.movabletype.org/?v=2.5\" />\n";
$_rss.="<admin:errorReportsTo rdf:resource=\"mailto:[email protected]\"/>\n";
}
while ($l=mysql_fetch_array($_rss_query)) {
//se tomarà en cuenta que las columnas son la siguientes
// titulo = el titulo
// descripcion= una pequeña descripcion de la noticia
// autor = el autor
//fecha = la fecha de publicacion
// articulo = el articulo
// categria = categoria
// <link> este item debe apuntar a donde se ubica la noticia ejem: localhost//not.php?id=345345
$_rss.="<item>\n";
$_rss.="<title>".rss_encoding($l['titulo'])."</title>\n";
$_rss.="<link>http://tuweb.com/noticias.php?articulo=".$l['ID']."</link>\n";
$_rss.="<description>".rss_encoding($l['articulo'])."</description>\n";
$_rss.="<dc:subject>".rss_encoding($l['categoria'])."</dc:subject>\n";
$_rss.="<dc:date>".$l['fecha']."</dc:date>\n";
$_rss.="</item>\n";
}
$_rss.="</channel>\n";
$_rss.="</rss>";
return $_rss;
}
//haremos otra funcion para facilitar muchas cosas
function rss_encoding($a)
{
return utf8_encode($a);
}
ahora bien
$_rss_query = es el resultado del query que hicimos para ver las noticias
$title= es el titulo del rss
el retorno serà un texto en formato RSS
entonces para que genere el XML y que lectores RSS lo reconoscan lo que nos falta hacer es poner las cabeceras.
bueno ahora el codigo completo
si a tu pagina acceden con
http://tuweb.com/sindicar.php Código PHP:
$rss_query("SELECT * FROM mi_tabla_noticias ORDER BY ID DESC LIMIT 100")
$_texto=rss_enviar($rss_query,"mi rss");
header("Accept-Ranges: bytes");
header("Content-Length: ".strlen($_texto));
header("Content-Type: text/xml");
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: inline; filename=\"rss.xml\";");
echo $_texto;
espero te orieente un poco de como se hace
connection closed.