Úvodní strana Fotogalerie Cestopisy Články O nás

Jekyll tag plugin

23. 4. 2016 account_circle Ondra label plugin, tagy

← Disqus komentáře pro Jekyll
Překlady v Jekyllu →

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.

← Disqus komentáře pro Jekyll
Překlady v Jekyllu →

©2023 OutOfTime.cz

Google+ Twitter Github