Software Berater Logo Software Berater #neuland seit 1993

Related Posts für Jekyll

Wenn ich über ein Thema schreibe und zum gleichen Thema auch andere Texte geschrieben habe, macht es doch Sinn, meine Leser darauf hinzuweisen. Bei Jekyll nennt sich das “verwandte Artikel” (related posts), und es ist immer ein wenig unhandlich. Ich hab mir deshalb dazu was eigenes geschrieben.

  • Der originale Jekyll Mechanismus der site.related_posts (Dokumentation) bietet in der Grundform nur 10 aktuellste Posts an. Diese müssen mit der aktuellen Seite thematisch überhaupt nichts zu tun haben.
  • Es gibt eine Option zum Verarbeiten von LSI (Latent Semantic Indexing) die aber je nach Sprache der Texte unterschiedliche Qualität liefert und die Laufzeit erheblich verlängert.
  • Plugins wie toshimaru/jekyll-tagging-related_posts erfordern Tags, die man konsistent setzen muss.
  • Reine Liquid-Lösungen wie diese hier gefallen mir nicht, weil zuviel Code im Template liegt - und Liquid im Vergleich zu Ruby eine weniger leistungsfähige Sprache ist.

Mein Mechanismus folgt einer wesentlich einfacheren Idee: Ich möchte die Verweise selbst angeben.

---
layout: post
title: A post title
references:
  - _posts/2021-01-17-another-post.md
  - _posts/2021-01-18-third-post.md

In der Eigenschaft references kann ich eine Reihe von Posts notieren, die als “related” in der Seite bereitstehen sollen. Im Layout passiert dann etwa sowas:

{% if page.related.size >= 1 %}
<aside class="related">
  <ul>
    {% for post in page.related %}
      <li>
        <a href="{{ post.url }}">{{ post.title }}</a>
      </li>
    {% endfor %}
  </ul>
</aside>
{% endif %}

Das Jekyll-Plugin erzeugt dann Verweise in der angegebenen Richtung, also hier von “A post title” nach “Another Post” und “Third post”, aber auch rückwärts von den beiden letztgenannten zur ersten Seite.

Das dafür notwendige Jekyll Plugin findest du im Quelltext dieser Website.