Ver Mensaje Individual
  #7 (permalink)  
Antiguo 01/08/2005, 14:35
Avatar de MaBoRaK
MaBoRaK
 
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
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.
__________________

Maborak Technologies