Creando un RSS para tu Web: La Forma Alternativa

En el proceso de pasar de WordPress a algo más sencillo, uno de los principales problemas fue el correcto funcionamiento del canal RSS.

Hasta hace unos minutos estaba utilizando una clase que encontré para esa tarea, pero por alguna razón, no funcionaba bien. En estos momentos, al parecer, ya funciona (probado en snownews y Google Reader), pero lo logré con una solución bastante “alternativa” :-)

En resumen lo que hago es que cada vez que agrego, edito o borro una entrada, se ejecuta un script que escribe un archivo XML con las últimas 10 entradas. Por otra parte para que se mantenga la dirección anterior (http://www.kickbill.com/?feed=rss2), hago un redireccionamiento al mismo archivo. A continuación el archivo que escribe el archivo XML (no es muy elegante la solución, pero funciona):

 

// Conexión a la base de datos
$con = mysql_connect(“host”,”usuario”,”clave”) or die (mysql_error());
mysql_select_db(“BD”,$con) or die (mysql_error());

// Función para cortar por palabras y no caracteres. Se usa para crear la descripción de una entrada (visto en marketingtechblog.com)
function limita($content,$maxchars){

    $content = substr($content, 0, $maxchars);
    $pos = strrpos($content, ” “);
    if ($pos>0) {
    $content = substr($content, 0, $pos);
    }
    return $content;
   
}

// Consulta por las ultimas entradas
$query= “SELECT * FROM tu_tabla ORDER BY ID DESC LIMIT 0,10″;
$result= mysql_query($query, $con);

// Bucle que agrega a un array cada entrada
while($array_result= mysql_fetch_array($result)){
   
    $titulo= htmlentities($array_result["titulo_post"]);
    $descripcion= htmlentities(limita($array_result["contenido_post"], 500));
   
    $array_items[]= “
          $titulo
          http://www.la-url.com/?p=$array_result[id_post]
          $descripcion
          $array_result[fecha_post]
          http://www.la-url.com/?p=$array_result[id_post]
        “;

}

$titulo_canal= “Título del canal”;
$url= “http://www.la-url.com/”;
$descripcion_canal= “la descripción del canal”;

// Pasamos el array con los post a una cadena
$items= implode(“\n”, $array_items);

$clientGMT=intval(-4);
$serverGMT=gmdate(‘d-m-Y H:i:s’);
$fecha_gmt=date(‘d-m-Y H:i:s’,time()+$clientGMT-$serverGMT);

// Escribimos el archivo XML

$rss= fopen(“kickbill.xml”, “w+”);

fwrite($rss,
“<?xml version=\”1.0\”?>
<rss version=\”2.0\”>
  <channel>
    <title>$title</title>
    <link>$url</link>
    <description>$description</description>
    <language>es-es</language>
    <pubDate>$fecha_gmt</pubDate>
    <lastBuildDate>$fecha_gmt</lastBuildDate>
    <docs>http://www.kickbill.com</docs>
    <generator>Autgenerator</generator>
    <managingEditor>jptobar@gmail.com</managingEditor>
    <webMaster>jptobar@gmail.com</webMaster>
    <ttl>5</ttl>
 
    $items
 
  </channel>
</rss>
“);

fclose($rss);

 

De todas maneras hay varias etiquetas que aún estoy investigando para que son, por lo que queda bastante por mejorar.

Artículos Aleatorios

One comment

  1. Buena, ahora mi firefox me muestra impecable los rss, y me aparece el famoso ícono al lado de la dirección. :)

Leave a comment