Entre Blogs Portal

Publicado por Fernando Tellado | 11 Junio 2008

Creando un Archivo Cronológico

Una página de archivo no es mas que una página con enlaces a las entradas de tu blog ordenadas por fecha, categorías, etc. Algo que no tiene mucho uso habitualmente pero que parece un estándar, algo que hay que tener.

Ahora bien, ya que la tienes, mejor si sirve para algo, si tiene una estructura que sirva a tus lectores a encontrar tu contenido basándose en las fechas, por ejemplo. ¡Leche, si hasta nosotros tenemos página de archivo!. Ya sabes, a hacer una.

Esto con lo que te castigo hoy (y pasaré lista antes del exámen) es una guía para hacer una página de archivo en la que ofrecerás a tus lectores una hemeroteca ordenada cronológicamente y jerárquicamente, ¡como Jobs manda!.

La Página

Lo primero es crear una página de archivo y, como en otras ocasiones, hay que decirle a WordPress que es una plantilla de página. Se hacía así:

PHP:
  1. <?php
  2.  /* Template Name: Archivo Jerárquico
  3. */
  4. ?>

Lo siguiente es añadir el código estándar de página. En tu blog tendrás ya alguna seguramente. Como siempre, usamos el del tema por defecto de WordPress, Kubrick, que debemos añadir a continuación de lo anterior. En este caso sería este:

PHP:
  1. <?php get_header(); ?>
  2. <div id="content" class="widecolumn">
  3. <!--Aquí es donde luego pondremos nuestro código-->
  4. </div>
  5. <?php get_footer(); ?>

Nuestro Código

Ya hemos llegado. Aquí, donde te he indicado antes, es donde ponemos el código que hará que nuestro archivo sea jerárquico, que nos muestre correctamente la cronología de los posts. Apunta esto:

PHP:
  1. <?php
  2.  
  3. // Declaramos algunos vars de ayuda
  4. $previous_year = $year = 0;
  5. $previous_month = $month = 0;
  6. $ul_open = false;
  7.  
  8. // Coge los posts
  9. $myposts = get_posts('numberposts=0&orderby=post_date&order=DESC');
  10.  
  11. ?>
  12.  
  13. <?php foreach($myposts as $post) : ?>   
  14.  
  15.     <?php
  16.  
  17.     // Establecemos las variables de los posts
  18.     setup_postdata($post);
  19.  
  20.     $year = mysql2date('Y', $post->post_date);
  21.     $month = mysql2date('n', $post->post_date);
  22.     $day = mysql2date('j', $post->post_date);
  23.  
  24.     ?>
  25.  
  26.     <?php if($year != $previous_year || $month != $previous_month) : ?>
  27.  
  28.         <?php if($ul_open == true) : ?>
  29.        
  30.         <?php endif; ?>
  31.  
  32.         <h3><?php the_time('F Y'); ?></h3>
  33.  
  34.         <ul class="month_archive">
  35.  
  36.         <?php $ul_open = true; ?>
  37.  
  38.     <?php endif; ?>
  39.  
  40.     <?php $previous_year = $year; $previous_month = $month; ?>
  41.  
  42.     <li><span class="the_day"><?php the_time('j'); ?></span> <span class="the_article"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></span></li>
  43.  
  44. <?php endforeach; ?>

¿Como funciona esto? No es fácil de explicar en realidad. Básicamente, estamos usando la función get_posts() para obtener las entradas (numberposts=0 significa "todos los posts"), ordeandos por fecha (orderby=post_date) y en orden descendente (order=DESC). Luego entramos en cada uno de ellos, y comparamos su mes y año de publicación con el anterior y mostrando el año y mes de cada uno. ¿Lo ves?.

¡A jugar!

Pues no hay mas. Solo tienes que guardar el archivo y subirlo a la carpeta de tu plantilla (/wp-content/themes/tu_plantilla). Luego creas una nueva página en el editor de páginas del panel de admin de tu blog, y eliges la que se llama "Archivo Jerárquico" en el menú desplegable de Plantillas de Página. Guardas y ya lo tienes, si acaso aplicarle alguna clase CSS para darle algo de estilo al archivo y que se acomode mejor al aspecto de tu blog, poco mas.

También te puede interesar:

2 comentarios | Escribe un comentario

  1. guardafaro (7 comentarios) - 11/06/2008 a las 13:11

    Me parece que te faltó cerrar el ul () de
    Y si te puedo preguntar algo, ¿cómo agregarías para que, en cada uno de los post listados, se agregara el número de lecturas que ha tenido, y el de comentarios?

Sitios que enlazan a esta entrada

Escribe un comentario




XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Ayuda WordPress está alojado en Mediatemple - Tu también puedes

LO ÚLTIMO EN LOS FOROS

Cargando...

IN YOUR LANGUAGE

Spanish flagItalian flagChinese (Simplified) flagPortuguese flagEnglish flagGerman flagFrench flagJapanese flagRussian flagSwedish flagCatalan flagHebrew flag
By N2H