Jekyll tag plugin
23. 4. 2016
Dnes jsem přidal na náš web plugin pro generování stránek se seznamem článků s daným tagem. Tentokrát jsem plugin nepsal sám, ale sáhl jsem po již hotovém řešení, které jsem náhodou objevil při hledání něčeho jiného.
Soubor tags.rb stačí nahrát do do adresáře _plugins
a půl je hotovo. Plugin nastavuje proměnnou title
na anglický text “Posts with tag” a možná tedy budete potřebovat tento text změnit. Dále nastavuje proměnnou collated_posts
, ve které je pole postů s daným tagem. No a nakonec nastavuje proměnnou tag
, kde je překvapivě náš tag.
Teď už nám stačí pouze nadefinovat si layout v _layouts/tag.html
. Ten v mém případě vypadá takto:
---
layout: page
---
{% include archive.html posts=page.collated_posts %}
Soubor _includes/archive.html
vypisuje příspěvky v include proměnné posts
tak, jak to můžete vidět například v seznamu článků, kde je použit s proměnnou posts=site.posts
tak, aby nám vypsal všechny články na webu. Jedná se o poměrně ošklivý/špatně čitelný liquid skript (asi jako všechny liquid skripty), který jsem převzal z použité šablony tohoto webu a náležitě si ho upravil. Koneckonců, podívejte se sami:
{% assign last_year = 0 %}
{% for post in include.posts %}
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
{% capture next_year %}{{ post.previous.date | date: "%Y" }}{% endcapture %}
{% if last_year != this_year and last_year != 0 %}
</ul>
{% endif %}
{% if last_year != this_year %}
{% if last_year != 0 %}
</ul>
{% endif %}
<h2 class="c-archives__year" id="{{ this_year }}-ref">{{this_year}}</h2>
<ul class="c-archives__list">
{% endif %}
<li class="c-archives__item">
<div class="c-archives__item__header">
<h3><a href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a></h3>
<p>{{ post.date | date: "%-d. %-m. %Y" }}</p>
</div>
<p>{{ post.excerpt }}</p>
<p><a href="{{ post.url | prepend: site.baseurl }}">číst dál...</a></p>
</li>
{% if forloop.last %}
</ul>
{% endif %}
{% assign last_year = this_year %}
{% endfor %}
Tak a to by mělo být vše. Schválně si zkuste kliknout třeba na tag plugin nahoře v hlavičce. A pokud máte nějaký dotaz, tak se neváhejte zeptat dole v komentářích, které jsem přidal v minulém článku.