Creando un feed RSS con Codeigniter

Por el 25 de diciembre de 2007

en: Programacion

Ya han pasado algunas semanas desde que descubrí este genial framework, pensado para ofrecer un alto rendimiento, además es bastante ligero y fácilmente configurable.

CodeIgniter Framework para PHP

Hay muchos frameworks para PHP y este podría pasar por una alternativa mas, pero si la aplicación que desarrollas requiere de una plataforma que no marque mucho la aplicación y que necesite un alto rendimiento creo que CodeIgniter debería ser tu elección.

Cumple perfectamente el fin de cualquier framework.. una estructura definida que de soporte a un proyecto web y ayude a que este proyecto sea organizado y desarrollado.

Tras esta breve descripción os dejo un ejemplo de como podríamos crear nuestro feed RSS con las herramientas que ofrece CodeIgniter

Creando el controlador

En primer lugar tenenmos que crear un controlador con el nombre “feed”, recuerda que un controlador es simplemente un archivo que es llamado cada vez que la URL a la que va asociado es invocada.

<?php
class Feed extends Controller
{

    function Feed()
    {
        parent::Controller();
        $this->load->model('posts_model', '', TRUE);
        $this->load->helper('xml');
    }

    function index()
    {
        $data['encoding'] = 'utf-8';
        $data['feed_name'] = 'TuFuncion.com';
        $data['feed_url'] = 'http://www.tufuncion.com';
        $data['page_description'] = 'Descripción de la página';
        $data['page_language'] = 'es-es';
        $data['creator_email'] = 'Manuel Gutiérrez Heredia';
        $data['posts'] = $this->posts_model->getRecentPosts();
        header("Content-Type: application/rss+xml");
        $this->load->view('feed/rss', $data);
    }
}
?>

getRecentPosts()

En un segundo paso debemos comprobar que tenemos declarada y funcionando las funciones invocadas en el controlador… en nuestro caso “getRecentPosts()”, si lo deseas puedes hacer la prueba de este ejemplo pasando datos estáticos sin necesidad de utilizar esta función.

function getRecentPosts ()
{
        $this->db->orderby('post_date', 'desc');
        $this->db->where('post_visible', 1);
        $this->db->limit(10);
        return $this->db->get('posts');
}

Vista

Por último necesitamos una vista, una vista simplemente es una página, o un fragmento de página (cabecera, pie, barra lateral). De hecho, las vistas son más versátiles y flexibles si se utilizan unas embebidas dentro de otras.

Las vistas nunca son llamadas directamente y tienen que ser cargadas con un controlador, el controlador es el que se encarga de realizar la distribución de las diferentes acciones por eso es el responsable de la carga de las diferentes vistas.

Esta vista deberá tenenr el nombre que hemos definido en el controlador, en nuestro caso “rss” dentro de la carpeta “feed”.

<?php
echo '<?xml version="1.0" encoding="utf-8"?>' . "
";
?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>

    <title><?php echo $feed_name; ?></title>

    <link><?php echo $feed_url; ?></link>
    <description><?php echo $page_description; ?></description>
    <dc:language><?php echo $page_language; ?></dc:language>
    <dc:creator><?php echo $creator_email; ?></dc:creator>

    <dc:rights>Copyright <?php echo gmdate("Y", time()); ?></dc:rights>
    <admin:generatorAgent rdf:resource="http://www.codeigniter.com/" />

    <?php foreach($posts->result() as $entry): ?>

        <item>

          <title><?php echo xml_convert($entry->post_title); ?></title>
          <link><?php echo site_url('blog/post/' . $entry->url_title) ?></link>
          <guid><?php echo site_url('blog/post/' . $entry->url_title) ?></guid>

          <description><![CDATA[
      <?= str_replace('/img/post_resources/', base_url() . 'img/post_resources/', $entry->post_body); ?>
      ]]></description>
      <pubDate><?php echo date ('r', $entry->post_date);?></pubDate>
        </item>

    <?php endforeach; ?>

    </channel></rss>

Si todo ha funcionado podremos invocar la url /feed y comprobar como en tres sencillos pasos hemos creado un feed RSS para nuestra aplicación.

Via: Derek Allard

1 Respuesta a Creando un feed RSS con Codeigniter

Avatar

elias

16 de julio de 2011 a las 7:32 am

pesima la explicacion con respecto a la funcion getRecentPosts(), eso causa mucha confusion

Dejar un comentario