Categoria: jekyll

Usando categorias e tags no Jekyll

13 de Outubro de 2015

GitHub Pages serviço é simplesmente incrível! E com a integração Jekyll ele fica ainda mais impressionante! Mas existem algumas limitações neste grande sistema automatizado

Esse artigo foi traduzido de: How to use tags and categories on github pages without plugins


GitHub Pages serviço é simplesmente incrível, e com a integração Jekyll ele fica ainda mais impressionante! Mas existem algumas limitações neste grande sistema automatizado:

Como você já deve saber:

  • não há plugins de tag/categoria disponível (atualmente).

Triste... Mas isso era algo que eu realmente queria ter!

Então eu construí minha própria Data-Template-NoPlugin-System e funciona.

Você pode ver uma demonstração ao vivo nesta página.

Aqui está um pequeno guia de como implementá-lo:

1. Adicione um pouco de lógica no template do seu layout post.html

_layouts/post.html
{% assign post = page %}
{% if post.tags.size > 0 %}
  {% capture tags_content %}Posted with {% if post.tags.size == 1 %}<i class="icon icon-tag"></i>{% else %}<i class="icon icon-tags"></i>{% endif %}: {% endcapture %}
  {% for post_tag in post.tags %}
    {% for data_tag in site.data.tags %}
      {% if data_tag.slug == post_tag %}
        {% assign tag = data_tag %}
      {% endif %}
    {% endfor %}
    {% if tag %}
      {% capture tags_content_temp %}{{ tags_content }}<a href="/blog/tag/{{ tag.slug }}/">{{ tag.name }}</a>{% if forloop.last == false %}, {% endif %}{% endcapture %}
      {% assign tags_content = tags_content_temp %}
    {% endif %}
  {% endfor %}
{% else %}
  {% assign tags_content = '' %}
{% endif %}

2. Coloque o conteúdo da variavel tags_content onde quiser dentro do seu layout post.html

_layouts/post.html
<p id="post__meta">{{ tags_content }}</p>

3. Crie um layout chamado tag.html

_layouts/tag.html
<h1>Articles by tag :{{ page.tag }}</h1>
<div>
  {% if site.tags[page.tag] %}
    {% for post in site.tags[page.tag] %}
      <a href="{{ post.url }}/">{{ post.title }}</a>
    {% endfor %}
  {% else %}
    <p>There are no posts for this tag.</p>
  {% endif %}
</div>

4. Adicione em seu post entry o front-matter, como de costume.

_posts/how-to-use-tags-and-categories-on-github-pages-without-plugins.md
---
layout: post
title: How To Use Tags And Categories On GitHub Pages Without Plugins
category: programming
tags: [github, github-pages, jekyll]
---

5. Para cada tag usada você tem que adicionar uma entrada dentro do arquivo _data/tags.yml

_data/tags.yml
- slug: github-pages
  name: GitHub Pages

6. Para cada tag usada você tem que adicionar um template vazio. Ex.: blog/tag/github-pages.md

blog/tag/github-pages.md
---
layout: blog_by_tag
tag: github-pages
permalink: /blog/tag/github-pages/
---

Para uma implementação mais complexa de categorias e tags veja nesse repositório: github.com/nandomoreirame/nandomoreira-jekyll-theme

/end