Evitar navegación.
Principal

Creando un feed RSS con Codeigniter

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

Enlaces Relacionados


Bien, pero...

Está muy bien, pero lamentablemente sólo funciona para generar el Feed, uno no puede depender de él, porque al tratar de agregarlo al Live Bookmarks de Firefox (por ejemplo) da error.

Saludos!

Exelente aporte, sobretodo

Exelente aporte, sobretodo para la comunidad hispana que usan el framework

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato