(es|en)
Parseando RSS con magpierss
A pesar de que en realidad no se php, me las arreglo bastante bien para modificar el código de wikis y blogs, generalmente aprovechando lo que conozco de otros lenguajes como perl o lua que tienen algunas estructuras parecidas y también ayudado por la sintaxis parecida a la de C. Asi es como reemplacé el lento javascript (proporcionado por feedburner o feed2js) que generaban los titulares de los feeds que tengo en mi side bar por lo mostrados a antojo, luego de parsearlos con magpierss. O sea, la diferencia principal es que ahora el html equivalente se genera en el servidor y no en el cliente.Lo único que hice fue bajarme el paquete de magpierss y copiar los archivos que indica el archivo "INSTALL" en "/usr/share/php/magpierss" (es válido cualquier directorio del path[1])
Después edite el archivo "scripts/sb_theme.php" de este blog (sphpblog) y agregué una función como la siguiente:
function menu_display_some_rss_html () {
$result = array();
$result[ 'title' ] = 'Titulares RSS';
require_once('magpierss/rss_fetch.inc');
error_reporting(E_ERROR);
$rss = fetch_rss("http://direcciondelfeed.com/feed");
if( $rss ) {
$num_items = 5;
$rss->items = array_slice($rss->items, 0, $num_items);
$result[ 'content' ] = '<ul>';
foreach ($rss->items as $item) {
$href = $item['link'];
$title = $item['title'];
$title = iconv("ISO-8859-1","utf-8",$title);
$result['content'].='<li><a href='.$href.'>'.$title.'</a></li>';
}
$result[ 'content' ] .= '</ul>';
}
else {
$result = 0;
}
return ( $result );
}
Usando solo los ejemplos que da la documentación tenía problemas con los caracteres "especiales" como acentos y eñes, asi que la solución que encontré fue convertir el texto a utf-8 usando iconv de la siguiente forma:
$title = iconv("ISO-8859-1","utf-8",$title);
para hacer las páginas que muestran el feed completo use un template de sphpblog para conservar la estructura del blog y también la siguiente línea de magpierss para recuperar todo el contenido de cada post:
$content = $item['content']['encoded'];
y le di el formato necesario.
[1] Que se puede conocer poniendo en el shell "php -i | grep 'include_path'". Sino se tiene servidor propio se puede colocar en el mismo directorio donde esta el archivo que hace uso de magpierss.
[ add comment ] | [ 0 trackbacks ] | permalink

Search









