Voy a mostrar como quedo mi ejemplo.
En un primer paso arme el controller para el modulo Rss.
1
<?php
2 class Rss_IndexController extends Me_Generic_Controller
3 {
4 public function indexAction ()
5 {
6 Zend_Loader::loadClass('Zend_Feed');
7 Zend_feed::importArray(Rss::getArray(), 'atom')->send();
8 $this->_helper->viewRenderer->setNoRender();
9 }
10 }
11 ?>
Tenemos por ahora solo un metodo index, desde ese index cargamos Zend_Feed con Zend_loader, despues vamos a obtener del modelo Rss un array con el contenido que va a tener nuestro Atom. Para procesar ese Array vamos a usar Zend_Feed::importArray, el cual convierte el array en un xml valido. Lo otro que vamos a hacer es evitar que cargue la vista del modulo.
Por ahora va muy simple. Ahora vamos al modelo.
1
<?php
2 class Rss extends Zend_Db_Table
3 {
4 const CANT_NOTICIAS = '20';
5 const CHARSET = 'utf-8';
6 public static function getArray ()
7 {
8 $noticias = Noticias::getXCantidad(self::CANT_NOTICIAS);
9 $datos['title'] = 'Portal de noticias';
10 $datos['link'] = 'http://localhost/diario/rss/';
11 $datos['lastUpdate'] = Fechas::getMkFromFechaHora(Noticias::getLastDate());
12 $datos['charset'] = self::CHARSET;
13 $i = 0;
14 foreach ($noticias as $noticia) {
15 $datos['entries'][$i]['title'] = utf8_encode($noticia->titulo);
16 $datos['entries'][$i]['link'] = 'http://localhost/diario/noticias/?noticia=' . $noticia->id_noticia;
17 $datos['entries'][$i]['description'] = utf8_encode($noticia->texto_portada);
18 $datos['entries'][$i]['content'] = utf8_encode($noticia->texto);
19 $datos['entries'][$i]['lastUpdate'] = Fechas::getMkFromFechaHora($noticia->aud_fecha_hora_ingreso);
20 ++ $i;
21 }
22 return $datos;
23 }
24 }
25 ?>
Por ahora tambien va a tener un metodo solo, getArray en la primeras lineas traemos desde el modelo de Noticias las ultimas 20 noticias cargadas y activas. Declaramos un titulo a nuestro feed, que va a ser el titulo del portal de noticias, agregamos el link al feed, la fecha de la ultima actualizacion que va a estar con formato mktime y el charset, en nuestro ejemplo sera utf-8.
Con el objeto con las ultimas veinte noticias, vamos a iterarlos, para conseguir el detalle de cada noticia. Y vamos a completar los datos correspondientes, y por ultimo vamos a devolver el array generado.
Cuando le devolvemos al controller el array, este lo transforma en un Atom valido.
Cuando ejecutamos.
http://www.dominio.com/rss
nos va mostrar el Atom de las ultimas 20 noticias ;)
Pero falta algo, como hacer que desde el home nos aparezca el icono de rss y nos permita agregar en nuestro feed con la url http://www.dominio.com/ como hacemos con cualquier blog.
Muy facil
Dentro del head de nuestro html, agregamos la siguiente linea
1
2 <link rel="alternate" type="application/rss+xml" title="RSS" href="<?php echo $this->baseUrl;?>/rss/" />
en href ponemos la url a nuestro feed.
asi nos quedaria
Facil, no?
Otros links
No hay comentarios:
Publicar un comentario