Generador de canales RSS con zenphp

Con una clase RSS podemos generar contenidos en XML y en función de los parámetros hacer cosas realmente interesantes, así empezar a compartir datos como servicios,gracias a las especificaciones de RSS2.0 de fechas y actualizaciones…

Para dar un ejemplo propongo una función y después algo más complejo…


La clase extra zen_generador_rss está completada, ahora podemos hacer algo como esta función:

<?php
function rss2(){
//Cargar la clase
zen___carga_clase(‘zen_generador_rss’);
$canal_rss = new  zen_generador_rss();
$canal_rss->enlaceAtom = '';
$canal_rss->titulo = ‘Mis Noticias’;
$canal_rss->enlace = ‘http://misitio.es/noticias.php’;
$canal_rss->descripcion = ‘Últimas noticias de Mi Sitio web.’; //no usar HTML o bien usar zen_borraHTML()
$canal_rss->idioma = ‘es-es’;
$canal_rss->generador = ‘zenPHP Generador RSS’;
$canal_rss->editor = ‘juaxix’;
$canal_rss->webMaster = ‘zenphp’;
//Crear los items
$item = new zen_rss_item();
$item->titulo = ‘Nuevo generador publicado’;
$item
->descripcion = ‘Hoy por fin he publicado el generador’;
$item->enlace = ‘http://blog.zenphp.es’;
$item
->guid = ‘identificador_unico_generador’;
$item->fecha_publicacion = strftime(“%a, %d %b %Y %H:%M:%S %z”); //’Tue, 21 Feb 2008 00:00:01 GMT’;
$canal_rss->items[] = $item;
$item = new zen_rss_item();
$item->titulo = ‘Otro sitio web lanzado’;
$item->descripcion = ‘Otro sitio web nuevo zen lanzado.’;
$item->enlace = ‘http://aza.granadazen.com’;
$item->guid = ‘identificador_unico_aza_granadazen’;
$item->fecha_publicacion = strftime(“%a, %d %b %Y %H:%M:%S %z”); //’Wed, 19 Feb 2008 00:00:01 GMT’;
$canal_rss
->items[] = $item;
$rss_feed = new zen_generador_rss();
$rss_feed->codificacion = ‘UTF-8’;
$rss_feed
->version = ‘2.0’;
header
(‘Content-Type: text/xml’);
echo
$rss_feed->crearRSS($canal_rss);
}
?>
Devuelve algo como :

Algo más complejo:

sería algo como lo siguiente:

<?php
$canal_rss
->titulo = ‘Noticias de mi Página’;
$canal_rss->enlace = ‘http://www.mi-pagina.es/’;
//no usar HTML o bien usar zen_borraHTML()
$canal_rss->descripcion = ‘Últimas noticias del sitio web personal de juaxix’;
//suponemos que $this es una clase visualizador (vista+controlador de zenphp) de tipo HTML y su padre es una aplicación zen
//entonces $this->padre->noticias es un puntero a una clase zen_modelo_datos inicializada con los campos y las tablas que lo forman
$noticias = $this->padre->noticias->obtener(“idn,titulo,SUBSTR(HTML,1,100) as intro”,“”,“”,“order by idn desc”);
$n = count($noticias);
for (
$i=0; $i<$n; $i++){
$item = new zen_rss_item();
$item->titulo = zen_borraHTML($noticias[$i][‘titulo’]);
$item->descripcion = sprintf(‘<![CDATA[%s]]>’,($noticias[$i][‘intro’]));
//suponemos que hay una entrada en .htaccess del tipo RewriteRule ^rss(.*) /index.php/rss/$1/
$item->enlace = ‘http://www.mi-pagina.es/noticias/leer/’.$noticias[$i][‘idn’].
‘/’.zen_codifica_nombre_para_url($noticias[$i][‘titulo’]);
$item->guid = zen_codifica_nombre_para_url($noticias[$i][‘titulo’]);

$item->fecha_publicacion = date(ZF_FECHA_RFC822,$noticias[$i][‘fecha’]); // ‘Tue, 21 Feb 2008 00:00:01 GMT’;
//Añadir elemento
$canal_rss->items[] = $item;

}
?>

El resto es igual para mostrar el feed RSS

Compártelo

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.