|
|
|
Después de aprender a recorrer archivos XML con nuestro propio código en el artículo "Recorrer archivo XML, para lector RSS usando la extensión SimpleXML" y usando SimpliXML, es hora de utilizar una libreria específica que nos facilitará esta tarea.
MagpieRSS es un parser RSS programado en PHP que RSS 0.9, 1.0, RSS 2.0, y Atom. Funciona desde PHP 4.2.0 y soporte XML (expat), o PHP5 con libxml2.
Podemos descargar los ficheros desde la siguiente dirección: http://magpierss.sourceforge.net/
Los archivos principales que necesitamos son
- rss_fetch.inc - rss_parser.inc - rss_cache.inc - rss_utils.inc y el directorio "extlib", y copiarlos en un directorio que en nuestro caso hemos llamado "magpierss" y lo hemos alojado en la raiz del directorio de nuestra web.
Para hacer la llamada a la libreria debems poner el siguiente código en el archivo que queremos que tenga la información del RSS
require_once('magpierss/rss_fetch.inc'); ?>
Ahora tenemos que hacer la llamada al archivo XML, en este caso llamamos un archivo PHP que genera este archivo. El contenido lo guardaremos en una variable, en nuestro caso llamada rss.
$rss = fetch_rss("http://www.xlwebmasters.com/rss.php"); ?>
La variable con el contenido contiene un array de los elementos del XML sindicados y información sobre el sitio:
* $rss->channel["title"] Nombre del sitio * $rss->channel["description"] Descripción del sitio * $rss->channel["link"] URL del sitio sindicado Ahora solo falta acceder a los elementos del XML, lo podemos hacer usando $rss->items Aquí recorreremos todo el archivo con un foreach
foreach ($rss->items as $item) { echo "".$item["title"]." ".$item["description"]." "; } El código completo seria
require_once('magpierss/rss_fetch.inc'); $rss = fetch_rss("http://www.xlwebmasters.com/rss.php"); foreach ($rss->items as $item) { echo "".$item["title"]." ".$item["description"]." "; } ?> Especificar el número de items a mostrar
Un archivo XML puede contener un número muy grande de items que puede que no nos interese mostrar ya que nosotros solo queremos mostrar por ejemplo los diez primeros. Usando array_slice solo cogeremos el número deseado de items que queremos.
$items = array_slice($rss->items, 0, 10); ?>
Utilizar la cache
Para ganar velocidad en la carga del sitio web es importante guardar en cache los contenidos leidos de los XML. Esta libreria nos ofrece esta posibilidad, solo debemos añadir los siguiente en el código;
define("MAGPIE_CACHE_DIR", "/tmp/mysite_magpie_cache"); define("MAGPIE_CACHE_ON", 1); define("MAGPIE_CACHE_AGE", 300); ?>
En la variable MAGPIE_CACHE_AGE definimos el tiempo que guarda la cache en segundos (en el ejemplo 300 segundos, 5 minutos). Este tiempo lo podemos variar segun nuestras necesidades.
Código final usando todo lo aprendido:
require_once('magpierss/rss_fetch.inc'); define("MAGPIE_CACHE_DIR", "/tmp/mysite_magpie_cache"); define("MAGPIE_CACHE_ON", 1); define("MAGPIE_CACHE_AGE", 300); $rss = fetch_rss("http://www.xlwebmasters.com/rss.php"); $items = array_slice($rss->items, 0, 10);
foreach ($items as $item) { echo "".$item["title"]." ".$item["description"]." "; } ?>
|
|