Clase para crear un RSS Feed en PHP

admin

July 29, 2009

PHP

No Comment

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 .= ;
$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 “\n\t” . $content . “\n\n”;
}

function DescriptionTag($content)
{
return “\n\t” . $content . “\n\n”;
}

function LinkTag($content)
{
return “\n\t” . $content . “\n\n”;
}

function TitleTag($content)
{
return \n\t”</span> . <span>$content</span> . <span>“\n\n”;
}

function ItemTag($content)
{
return “\n\t” . $content . “\n\n”;
}

function ChannelTag($content)
{
return “\n\t” . $content . “\n\n”;
}

function RssTag($content)
{
return “\n” . . “\n\t” . $content . “\n\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.

Related Posts

Php Quikies: Optimización de Memoria

admin

February 12, 2019

PHP

No Comment

¿Te ha pasado que al correr un script Php te agotas la memoria y te bota un “Allowed Memory Size Exhausted”? Si es así, hay de dos sopas: Aumentar la memoria permitida. Esta es la opción rápida y sucia, no es eficiente, no muy recomendable, o mejor dicho, para nada en absoluto. Eficientizar el uso […]

Read More

Php & gs: Modificar una imágen, guardarla como Pdf y unirla a otro archivo

admin

September 11, 2018

PHP

No Comment

Estaba actualizando mi libro “Correteando la Chuleta“, disponible de forma gratuita aqui, me parece buena idea mandar ediciones personalizadas con un reconocimiento a los lectores, y me di a la tarea de automatizar este proceso. Mi intención es tener un script que mande llamar con solamente el nombre como parámetro y que el resultado sea […]

Read More

Leave a Reply

Your email address will not be published. Required fields are marked *