Un moyen facile de prendre en charge les tags dans un blog jekyll

J’utilise l’installation standard de jekyll pour maintenir un blog, tout se passe bien. Sauf que je voudrais vraiment taguer mes posts.

Je peux étiqueter un article en utilisant l’affaire YAML, mais comment puis-je générer des pages pour chaque tag pouvant répertorier tous les messages pour un tag?

Cet aperçu générera une page par catégorie pour vous: https://gist.github.com/524748

Il utilise un plug-in Jekyll Generator, plus une sous-classe Page.

Voici une solution avec des balises sortingées par ordre alphabétique sur une seule page .
Il utilise Liquid uniquement, ce qui signifie qu’il fonctionne sur GitHub Pages:

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

{{ tag }}

{% endfor %}

Vous pouvez le voir en action ici .


MODIFIER:

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

J’ai une explication plus détaillée sur mon blog:
Séparez les pages 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 --- 

{{ page.tag }}

    {% for post in site.tags[page.tag] %}
  • {{ post.date | date: "%B %d, %Y" }}: {{ post.title }}
  • {% endfor %}

Avec ce fichier de disposition, vous pouvez append une nouvelle page de tag en ajoutant un nouveau fichier avec seulement deux lignes de front-yam.

Voici un exemple pour la balise jekyll :

/tags/jekyll/index.html :

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

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

Pour générer le fichier d’index racine (c.-à-d. La liste des tags liés à /tags/jekyll/index.html etc.) , vous pouvez utiliser une solution similaire à celle qui /tags/jekyll/index.html en haut de cette réponse, où je génère une seule page sortingée alphabétiquement. Mots clés:

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

Cela va générer une liste de liens comme ceci:

  

Notez que cette solution utilise un espace vide pour séparer les balises, de sorte que cela ne fonctionne pas lorsque vos balises contiennent des espaces et que le commentaire de Yevgeniy Brikman s’applique également ici.

Jetez un oeil sur les sites utilisant jekyll . Il y a quelques fourches personnalisées qui ont implémenté la fonctionnalité de marquage, si possible aussi comme vous le souhaitez 🙂

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

C’est une tâche de 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 tag, vous pouvez utiliser des ancres, ce qui est à mi-chemin!

J’utilise le super plugin Jekyll Tagging qui génère automatiquement un nuage de tags et des pages de tag. Facile à installer et à utiliser.

Voici une page pour le tag “photo” sur mon blog, et vous pouvez voir les tags en bas.

Basé sur la réponse de Christian ci-dessus, j’ai créé un script bash qui fait ce qu’il a décrit.

https://github.com/ObjectiveTruth/objectivetruth.github.io/blob/master/rebuild_tags.sh

Assurez-vous d’avoir le script vim 14 lignes /non_website_resources/ dans le /non_website_resources/

ET

Faites le /_layouts/tagpage.html affiché dans la réponse de Christian ci-dessus, mais renommez-le en /_layouts/tag_pages.html

La structure de fichier devrait être comme ceci:

 .jekyll_website_root ├── _posts ├── _layout │ ├── tag_pages.html ├── rebuild_tags.sh 

Exécuter à partir du répertoire racine ./rebuild_tags.sh

Si vous obtenez une autorisation refusée, assurez-vous de lancer chmod 777 rebuild_tags.sh


Si vous regardez les commentaires sur les scripts, c’est assez simple:

  • Utilise sed pour trouver toutes les balises dans chaque fichier .md répertoire _post

  • Utilise sed pour masser les données au format approprié

  • Prend toutes les balises uniques et crée un répertoire et un index.html pour chaque

De cette façon, si vous avez de nouveaux tags, lancez simplement le script pour reconstruire les pages avant de lancer github

Une manière simple et sans plugin de faire des tags


MODIFIER

Suppression de la dépendance sur d’autres fichiers. Juste besoin d’un script!