Question

J'utilise l'installation standard de Jekyll pour gérer un blog, tout va bien. Sauf que j'aimerais vraiment taguer mes posts.

Je peux marquer une publication à l'aide de la prééminence YAML, mais comment puis-je générer des pages pour chaque balise pouvant répertorier toutes les publications d'une balise?

Était-ce utile?

La solution

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

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

Autres conseils

Voici une solution avec des balises triées par ordre alphabétique sur une seule page .
Il utilise uniquement Liquid, 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 %}
  <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 ici .

EDIT:

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:
Pages séparées par étiquette / 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 présentation, vous pouvez ajouter une nouvelle page de balise en ajoutant un nouveau fichier avec seulement deux lignes de la matière principale YAML.

Voici un exemple de balise jekyll :

/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 rappeler de créer un nouveau fichier de deux lignes.

Pour générer le fichier d'index racine (c'est-à-dire la liste des balises menant à /tags/jekyll/index.html etc.) , vous pouvez utiliser une solution similaire. comme celui au-dessus de cette réponse où je génère une seule page avec des balises trié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="/tags/{{ tag }}/">{{ tag }}</a><br>
{% endfor %}

Ceci générera une liste de liens comme ceci:

<ul>
    <li><a href="/tags/.net/">.net</a></li>
    <li><a href="/tags/authentication/">authentication</a></li>
    <li><a href="/tags/backup/">backup</a></li>
</ul>

Notez que cette solution utilise un blanc pour fractionner les balises. Elle ne fonctionne donc pas lorsque vos balises contiennent des blancs et Le commentaire de Yevgeniy Brikman s'applique également ici.

Consultez les sites utilisant jekyll . Quelques fourchettes personnalisées ont implémenté la fonctionnalité de marquage, également dans le sens souhaité: -)

J'avais 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 balises. 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 à mi-chemin!

J'utilise l'excellent plug-in Jekyll Tagging qui génère automatiquement un nuage de tags et des pages de tags. Facile à installer et à utiliser.

Voici une page pour la " photo " tag sur mon blog, et vous pouvez voir le nuage de tags en bas.

Sur la base de la réponse de Christian ci-dessus, j'ai créé un script bash qui correspond à ce qu'il a décrit.

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

Assurez-vous d'avoir la ligne d'accompagnement script vim dans le répertoire / non_website_resources /

ET

Faites en sorte que / _ layouts / tagpage.html apparaisse dans la réponse de Christian ci-dessus mais renommez-le ainsi: / _ layouts / tag_pages.html

La structure de fichier devrait ressembler à 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 erreur d'autorisation refusée, assurez-vous d'exécuter chmod 777 rebuild_tags.sh

Si vous regardez les commentaires de scripts, c'est assez simple:

  • Utilise sed pour rechercher toutes les balises de tous les fichiers .md du répertoire _post

  • .
  • Utilise sed pour modeler les données au format approprié

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

Ainsi, si vous avez de nouvelles balises, exécutez simplement le script pour reconstruire les pages avant de passer à github

Une façon simple et agréable de créer des tags sans plug-in

MODIFIER

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top