julio 15, 2009 0

Generación de un feed RSS con TemplatePower

By in Librerías, PHP

Creo que no hace falta decir que la librería TemplatePower me gusta bastante, a pesar de algunas carencias importantes que tiene. Hoy vamos a ver como realizar un feed RSS mediante esta librería.

Lo primero que necesitamos es la plantilla con el feed:

feed.tpl:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>{title}</title>
	<link>{link}</link>
	<description>{description}</description>
<!-- START BLOCK : item -->
    <item>
      <title>{title}</title>
      <link>{link}</link>
      <description>{description}</description>
    </item>
<!-- END BLOCK : item -->
</channel>
</rss>

Este sería un feed muy sencillo, pero como ejemplo nos sirve perfectamente. Luego tendríamos el código PHP que nos generaría el feed usando TemplatePower:

feed.php:

<?php
include 'class.TemplatePower.inc.php';

// Indicamos que el contenido es un XML
header('Content-Type: text/xml');

// Creamos el objeto para generar la plantilla
$tpl = new TemplatePower('feed.tpl');
$tpl->prepare();

// Es una función ficticia que nos devolvería un objeto con los datos del canal
$canal = obtenerDatosCanal();

// Asignamos los datos del canal
$tpl->assign('title', $canal->title);
$tpl->assign('link', $canal->link);
$tpl->assign('description', $canal->description);

// Es una función ficticia que nos devuelve un array de objetos con los datos
// de los items.
$items = obtenerItems();

// Recorremos los items para ir generandolos
foreach ($items as $item)
{
	// Creamos un nuevo bloque y le asignamos los datos
	$tpl->newBlock('item');
	$tpl->assign('title', $item->title);
	$tpl->assign('link', $item->link);
	$tpl->assign('description', $item->description);
}

$tpl->printToScreen();
?>

Y con esto quedaría generado nuestro feed. El formato RSS es bastante más complejo y tiene más etiquetas de las expuestas en este artículo, esto es solo un pequeño ejemplo a modo de prueba conceptual. Podemos ver la especificación del formato en la siguiente página: RSS 2.0 Specification.

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags: , , ,

Leave a Reply