miércoles, 29 de julio de 2009

Clase para crear un RSS Feed en PHP

En esta ocasión les quiero compartir una sencilla clase para poder realizar un RSS desde PHP. Con ella, simplemente es necesario traer una consulta con los campos llamados: "Title", "Link", "Description" y "PubDate", ajustables a cualquier consulta, media la clausa "AS". Ejemplo, si el campo de tu table se llama "nombre_articulo", lo seleccionas como " AS Title".

Posteriormente se crea una instancia de la clase, y se manda llamar la función principal. Mediante la instrucción "echo" se imprime el resultado, que esta en formato xml, esuqematizado para RSS versión 2.0.

Ahora veamos el código de la clase:


Codigo PHP
<?php
/**

* PHP Feeder, clase para contruir un feeder a partir de una consulta
* a una base de datos.
*/

Class Feeder
{

Function Feed($title, $link, $description, $result)
{
$feedstr = "";

$feedstr .= '<?xml version="1.0" encoding="UTF-8"?>';
$feedstr .= $this->RssTag($this->ChannelTag($this->TitleTag($title) .
$this->LinkTag($link) .
$this->DescriptionTag($description) . $this->FeedItems($result)));

return $feedstr;
}


function FeedItems($result)
{
$feefitems = "";

if( $result )
{
while($row = mysql_fetch_array($result))
{
$feeditems .= $this->ItemTag($this->TitleTag($row["Title"]) .
$this->LinkTag($row["Link"]) . $this->DescriptionTag($row["Description"]) .
$this->PubDateTag($row["PubDate"]));
}
}

return $feeditems;
}

function PubDateTag($content)
{
return "<pubDate>\n\t" . $content . "\n</pubDate>\n";
}

function DescriptionTag($content)
{
return "<description>\n\t" . $content . "\n</description>\n";
}

function LinkTag($content)
{
return "<link>\n\t" . $content . "\n</link>\n";
}

function TitleTag($content)
{
return "<title>\n\t" . $content . "\n</title>\n";
}

function ItemTag($content)
{
return "<item>\n\t" . $content . "\n</item>\n";
}

function ChannelTag($content)
{
return "<channel>\n\t" . $content . "\n</channel>\n";
}

function RssTag($content)
{
return "\n" . '<rss version="2.0">' . "\n\t" . $content . "\n</rss>\n";
}

}

?>



El uso de esta clase en una página externa quedaría:



Codigo PHP

<?php
/**

* Prueba de PHPFeeder.
*/

include("Feeder.php");

$Conn = mysql_connect("tuserverurl","tuusuario","tupassword",TRUE) or die("Error de conexion:" . mysql_error($Conn));
mysql_select_db("tubasededatos",$Conn);

$sqlqry = "SELECT Campo1 as Title,
Campo2 as Description,
Campo3 as Link,
Campo4 as PubDate
FROM TuTabla
ORDER BY Campo4 DESC
LIMIT 100;";


$rs = mysql_query($sqlqry,$Conn);

$Feed = new Feeder();
echo $Feed->Feed("Titulo del feed", "http://urlDelFeed",
"Descripción del feed", $rs);


if( $rs )
{
echo $Feed->Feed("Titulo del feed", "url del feed",
"Descripción del feed", $rs);
}
else

{
echo "Error en la conexion con MySQL Server:" . mysql_error($Conn);
}

?>






Y esto nos dará por resultado un canal de noticias en RSS.

Aunque ya la mayoría de los blogs y sistemas de administración de contenido tienen preinstaladas herramientas para feed, el tener una clase propia y sencilla de usar tiene sus ventajas, ya que se le pueden dar usos personalizados, como rastreador de eventos espeficicos, errores, auditorías, o el clasico uso de noticias con mayor control, etc., sin echar mano de correos, ya que estos pueden consumir recursos y transferencia del servidor en mayor medida que los canales de noticias.

No hay comentarios:

Publicar un comentario