49 votes

Un moyen simple de prendre en charge les balises dans un blog Jekyll

J'utilise l'installation standard de Jekyll pour tenir un blog, tout se passe bien. Sauf que j'aimerais vraiment marquer mes articles.

I puede Je peux étiqueter un article à l'aide de l'interface YAML, mais comment puis-je générer des pages pour chaque étiquette qui peuvent lister tous les articles pour une étiquette ?

79voto

Christian Specht Points 15907

Voici une solution avec des tags triés par ordre alphabétique sur une seule page .
Il utilise uniquement Liquid, ce qui signifie qu'il fonctionne sur les pages GitHub :

{% capture tags %}
  {% for tag in site.tags %}
    {{ tag[0] }}
  {% endfor %}
{% endcapture %}
{% assign sortedtags = tags | split:' ' | sort %}

{% for tag in sortedtags %}
  <h3 id="{{ tag }}">{{ tag }}</h3>
  <ul>
  {% for post in site.tags[tag] %}
    <li><a href="{{ post.url }}">{{ post.title }}</a></li>
  {% endfor %}
  </ul>
{% endfor %}

Vous pouvez le voir en action aquí .


EDITAR:

Il existe également un moyen de générer une page distincte pour chaque balise sans plugin. (qui fonctionnera sur les pages GitHub) .

J'ai une explication plus détaillée sur mon blog :
Pages séparées par tag/catégorie avec Jekyll (sans plugins)

Tout d'abord, vous avez besoin d'un nouveau fichier de mise en page :

/_layouts/tagpage.html :

---
layout: default
---

<h1>{{ page.tag }}</h1>

<ul>
{% for post in site.tags[page.tag] %}
  <li>
    {{ post.date | date: "%B %d, %Y" }}: <a href="{{ post.url }}">{{ post.title }}</a>
  </li>
{% endfor %}
</ul>

Avec ce fichier de mise en page, vous pouvez ajouter une nouvelle page de balises en ajoutant un nouveau fichier avec seulement deux lignes de contenu frontal YAML.

Voici un exemple pour le jekyll étiquette :

/tags/jekyll/index.html :

---
layout: tagpage
tag: jekyll
---

Le seul inconvénient de cette approche : chaque fois que vous utilisez une nouvelle balise pour la première fois, vous devez vous souvenir de créer un nouveau fichier de deux lignes pour celle-ci.

Pour générer le fichier d'index racine (c'est-à-dire la liste des balises qui renvoient à l'adresse suivante /tags/jekyll/index.html etc.) vous pouvez utiliser une solution similaire à celle présentée en haut de cette réponse, où je génère une page unique avec des balises classées par ordre alphabétique :

{% capture tags %}
  {% for tag in site.tags %}
    {{ tag[0] }}
  {% endfor %}
{% endcapture %}
{% assign sortedtags = tags | split:' ' | sort %}
{% for tag in sortedtags %}
    <a href="http://stackoverflow.com/tags/{{ tag }}/">{{ tag }}</a><br>
{% endfor %}

Cela va générer une liste de liens comme celle-ci :

<ul>
    <li><a href="http://stackoverflow.com/tags/.net/">.net</a></li>
    <li><a href="http://stackoverflow.com/tags/authentication/">authentication</a></li>
    <li><a href="http://stackoverflow.com/tags/backup/">backup</a></li>
</ul>

_Notez que cette solution utilise un blanc pour diviser les balises, elle ne fonctionne donc pas si vos balises contiennent des blancs et des Commentaire de Yevgeniy Brikman s'applique ici aussi._

0 votes

C'est comme si je capturais l'information et que je l'assignais à une variable. Merci pour le post. Je ne suis pas sûr de ce que je vais faire, peut-être rien.

2 votes

C'est un hack intelligent ! Le problème que j'ai rencontré est que mes balises comportaient des espaces, ce qui fait que la fonction split: ' ' diviserait une balise en plusieurs mots. Pour contourner ce problème, j'ai utilisé un | comme délimiteur au lieu de l'espace et le fractionner : gist.github.com/brikis98/e71d6c736158080968f5

0 votes

Mais alors, à quoi ressemble votre index.html dans Root ? Est-ce qu'il liste simplement tous les tags/catégories sous forme de liens, de sorte que lorsque vous cliquez dessus, vous êtes redirigé vers la page tags/jekyll/index.html ?

14voto

Brian Clapper Points 11222

Ce gist va générer pour vous une page par catégorie : https://gist.github.com/524748

Il utilise un plugin Jekyll Generator, ainsi qu'une sous-classe Page.

8voto

Bitterzoet Points 1758

Jetez un coup d'œil à sites utilisant jekyll . Il existe quelques bifurcations personnalisées qui ont implémenté la fonctionnalité de balisage, en espérant qu'elle corresponde à vos attentes :-)

5voto

Matt Points 2231

J'ai eu la même question et je suis tombé sur ceci : http://gist.github.com/143571 .

C'est une tâche rake qui génère une liste de tags. Je l'ai légèrement modifié, et ma version est à : http://github.com/mattfoster/mattfoster.github.com/blob/master/Rakefile .

Bien que cela ne vous donne pas une page par balise, vous pouvez utiliser des ancres, ce qui est la moitié du chemin !

0 votes

Vous pouvez générer une liste de balises sans tâche Rake, en utilisant simplement Liquid. Consultez mon page des tags pour un exemple.

0voto

yegor256 Points 21737

jekyll-tagging gem m'a aidé dans mon blog

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X