Sugerencias

Customizando jekyll

Publicado el 03 Feb 2010

Hablo de
jekyllgithub

Como ya comente, este blog esta montado sobre jekyll pero por defecto la última versión, la 0.5.7, no soporta ciertas funcionalidades que para mi son bastante interesantes: generación dinámica de páginas para tags, generación de paginas de archivos (historial de posts) y posibilidad de tener una entradilla o resumen para cada entrada del blog.

Afortunadamente jekyll es un projecto muy apoyado por la comunidad y tiene un montón de forks en github, donde al final puedes encontrar muchísimas funcionalidades interesantes. Yo he creado mi propio fork donde he integrado todas las funcionalidades que me hacían falta en la última version de jekyll.

Páginas de archivos

En la sección archivo podéis ver esta feature funcionando. Jekyll te genera automáticamente una estructura de directorios por años, meses y días. Los layouts que utiliza en cada nivel para mostrar la información están un poco hard-codeados, y son respectivamente archive_yearly.html, archive_yearly_monthly.html y archive_daily.html todos bajo la carpeta _layouts. La variable collated_posts devuelve un hash accesible por años, meses y dias.

site.collated_posts[2009]
site.collated_posts[2009][12]
site.collated_posts[2009][5][12]

devolviendo en cada caso, todos los posts del año 2009, los posts de diciembre del 2009 o los posts del 12 de mayo del mismo año.

Páginas y listado de tags

A partir de la variable site, se puede obtener ahora un array con todos los tags usados en el blog:

site.tags_list

Para cada tag se puede obtener los post asociados a él de la siguiente manera:

site.tags[tag]

Por defecto, jekyll nos generará, bajo la carpeta /tags nuestras páginas estáticas para cada tag, a partir del layout tag_index.html. Con esto podemos generar un listado de tags del blog de la siguiente manera:

 for tag in site.tags_list  
 <li><a href="/tags/"></a> (0)</li>
 endfor 

Resumen de posts

Ahora, y gracias a un patch que me paso Gaizka, se puede definir un marker en cada post de la siguiente manera:

---
title: my-post
extended: ":mymarker:"
---

Ésta marca hará de separación entre lo que se considera el resumen del post, y el cuerpo completo del mismo. Cada vez que llamemos en un layout a cuerpo del contenido, post.content o page.content, si esta definido un marker se nos devolvera el resumen del post. Si no hay definido nada, el comportamiento será el habitual y nos devolvera el cuerpo del post completo.

Deja tu comentario: