RSS Syndication · 5 min read · Sep 14, 2025

Syndicación RSS Fácil con MagpieRSS

Syndicación RSS Fácil con MagpieRSS

¿Qué es MagpieRSS?

MagpieRSS, cariñosamente conocido como Magpie, es un analizador de RSS y Atom para PHP. Te permite mostrar los artículos más recientes de sitios web con feeds RSS o Atom en tu propio sitio. Esta es una excelente manera de agregar información nueva, fresca y relevante a tu sitio. Analiza RSS 0.9, RSS 1.0, y tiene algo de soporte para RSS 2.0 así como Atom 0.3.

¿Qué necesito para usar Magpie?

Para usar Magpie, tu servidor debe soportar PHP versión 4.2.0 con soporte XML, o PHP5 con soporte libxml2. Después de eso, configurar y usar Magpie es muy fácil.

Está bien, he escuchado suficiente, ¿dónde lo consigo?

Puedes descargar Magpie desde SourceForge haciendo clic aquí.

¿Y ahora qué?

Simplemente extrae el archivo y sube los siguientes archivos a tu servidor: rss_fetch.inc, rss_parser.inc, rss_cache.inc, y rss_utils.inc y todo el directorio llamado extlib. Puedes poner estos archivos en cualquier directorio en la raíz de tu servidor web. Yo tiendo a subirlos a un directorio llamado rss.

A continuación, necesitas decidir dónde te gustaría que fuera el contenido sindicado. Por ejemplo, si quisieras sindicar contenido en el índice de www.example.com necesitarías editar el archivo index.html(php). Si tu archivo no termina en php, necesitarás cambiarlo para que sí lo haga, ya que estaremos agregando código php a él.

A continuación, realmente editaremos el archivo index.php. Necesitamos agregar el siguiente código en la parte superior de la página donde deseas mostrar los feeds:

Ten en cuenta que tu ruta puede ser diferente dependiendo de cómo nombraste el directorio y dónde se encuentra tu index.php en el árbol. Para agregar realmente los feeds a tu página, también necesitas agregar las siguientes líneas para obtener y analizar el RSS:

y reemplazar la dirección con la dirección del feed que deseas mostrar.

Esto devolverá un array, $rss que incluye el contenido sindicado así como algo de información sobre el editor. La otra información devuelta (usualmente) es el nombre del editor, almacenado en $rss->channel[‘title’], una descripción del editor almacenada en $rss->channel[‘description’], y un enlace general al editor almacenado en $rss->channel[‘link’].

Los elementos se pueden acceder a través de $rss->items y se puede usar un bucle simple para recorrer los elementos uno a la vez. El código para el bucle es:

foreach ($rss->items as $item)  
        { // Código para manipular los elementos aquí  
        }

Cada elemento contiene un título, enlace y descripción. $item[‘title’] contiene el título del artículo, $item[‘link’] es el enlace al original y $item[‘description’] es la descripción de la historia que a menudo son las primeras líneas de contenido. Una lista básica del contenido sindicado se puede lograr usando el siguiente código:

channel['link'].">".$rss->channel['title']."";  
foreach ($rss->items as $item) {  
        $href = $item['link'];  
        $title = $item['title'];  
        $desc = $item['description'];  
        echo "  

$title
"; if($desc) echo $desc; }?>

Esto es bastante básico, pero deberías poder personalizarlo para que se ajuste a tus necesidades.

Problemas Generales y Soluciones

El contenido sindicado es demasiado largo para mi sitio.

Si el contenido que estás sindicando es demasiado largo o contiene demasiados elementos y comienza a hacer que tu sitio se vea raro, puedes simplemente agregar las siguientes líneas para establecer la cantidad de entradas mostradas y establecer la longitud de la descripción.

$items = array_slice($rss->items, 0, 5);

Esta línea devuelve solo un subconjunto del feed, en este caso solo las primeras 5 entradas. Para acortar la descripción usarías las siguientes líneas:

if (strlen($desc) >= 100)  
{  
        $desc = substr($desc,0,99)."...";  
}

Lo que esto hace es verificar si la longitud de la cadena para la descripción es mayor a 100 caracteres, que si lo es, mostrará los primeros 99 y … después para que el lector sepa que continúa.

Me gustaría habilitar la caché de feeds para reducir el ancho de banda y acelerar la carga. ¿Es esto posible?

¡Por supuesto! Magpie tiene la caché habilitada por defecto, pero probablemente necesitarás cambiar el directorio en el que se almacena la caché así como hacerlo escribible por el usuario con el que se ejecuta el servidor. Intenta escribir en el directorio de trabajo en el que se llama al script. Por ejemplo, si agregas el feed a tu página de inicio, el script intenta crear el directorio de caché en la raíz de tu servidor. Las siguientes líneas habilitan la caché y establecen el directorio en el que se almacena:

define('MAGPIE_CACHE_DIR', '/tmp/magpie_cache');  
define('MAGPIE_CACHE_ON', 1);

Por defecto, Magpie solo almacena en caché los elementos durante una hora, pero esto se puede cambiar con la siguiente línea:

define('MAGPIE_CACHE_AGE', 1800);

Esto establece a Magpie para almacenar en caché los elementos durante 30 minutos. Es importante notar que el intervalo se especifica en segundos.

Está bien, agregué esas líneas, ¡pero la caché aún no funciona!

Necesitas asegurarte de que el directorio que estableciste para la caché exista y sea escribible por el usuario con el que se ejecuta el servidor. En Debian, este es www-data. Lo siento, pero no sé qué usuario ejecuta apache por defecto en otras distribuciones. Puedes lograr eso con los siguientes comandos (como root):

mkdir /tmp/magpie_cache  
chown www-data:www-data /tmp/magpie_cache

Ten en cuenta que la caché no tiene que estar en /tmp y en realidad es una buena idea cambiarla si usas hosting compartido. Después de eso, actualiza la página y deberías ver algunos archivos con nombres muy extraños en el directorio de caché. Si lo haces, todo está bien. Si no, consulta la FAQ en la Página Principal de MagpieRSS.

Juntándolo todo

Lo siguiente es cómo las opciones deben combinarse, y es un ejemplo funcional con modificaciones menores de mi propio sitio.

items, 0, 5);  
foreach ($items as $item) {  
        $href = $item['link'];  
        $title = $item['title'];  
        $desc = $item['description'];  
        echo "  

$title
"; if($desc) if (strlen($desc) >= 125) { $desc = substr($desc,0,124)."..."; } echo $desc; } ; ?>

Esto recupera el feed de www.digg.com en la sección de Linux y muestra las primeras 5 entradas con una descripción de 125 caracteres de largo. También almacena en caché en el directorio /var/cache con el tiempo de caché predeterminado de 1 hora.

¡Y ahí lo tienes, una rápida y fácil sindicación RSS con MagpieRSS! Si necesitas más información, ayuda, o cualquier otra cosa, te animo a que consultes la Página Principal de MagpieRSS. También tienen una lista de correo activa y mantienen archivos que han respondido a mis preguntas cada vez que he necesitado ayuda.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.