me gratter la tête à ce sujet - aide très appréciée.
Je souhaite afficher une liste de tous mes messages Jekyll, classés par catégorie. Je sais que la ligne 3 n'est pas correcte mais je ne peux pas comprendre ce que cela devrait être. Des idées? Merci!
{% for category in site.categories %}
<h3>{{ category | first }}</h3>
{% for post in page.categories.category %}
{{ post.title }}<br>
{% endfor %}
{% endfor %}
Je l'ai! Besoin d'une boucle de messages intermédiaire avant de lister les messages individuels
<ul>
{% for category in site.categories %}
<li><a name="{{ category | first }}">{{ category | first }}</a>
<ul>
{% for post in category.last %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
fyi, si quelqu'un veut juste lister les posts dans une catégorie, cela fonctionne (diffère de l'exemple ci-dessus car la catégorie renvoie une liste de posts ...
<p>Posts in category "basic" are:</p>
<ul>
{% for post in site.categories.basic %}
{% if post.url %}
<li><a href="{{ post.url }}">{{ post.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
<h5>Categories</h5>
{% for category in site.categories %}
{% assign cat = category[0] %}
<h6><a href="#">{{ cat }}</a></h6>
{% for post in site.categories[cat] %}
<a href="{{ post.url }}">{{ post.title }}</a> <small>{{ post.date }}</small>
{% endfor %}
{% endfor %}
Voici une réponse qui utilise le tri (utile!):
{% comment %}
#
# Change date order by adding '| reversed'
# To sort by title or other variables use {% assign sorted_posts = category[1] | sort: 'title' %}
#
{% endcomment %}
{% assign sorted_cats = site.categories | sort %}
{% for category in sorted_cats %}
{% assign sorted_posts = category[1] | reversed %}
<h2 id="{{category[0] | uri_escape | downcase }}">{{category[0] | capitalize}}</H2>
<ul>
{% for post in sorted_posts %}
<li><a href="{{ site.url }}{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a></li>
{% endfor %}
</ul>
{% endfor %}
Ce n'est pas le mien, c'est tiré de ici .
Il existe maintenant un plugin officiel disponible pour cela. jekyll-archives
.
Pour s'en servir,
Ajoutez jekyll-archives
à vos fichiers Gemfile
et _config.yml
.
ajoutez une configuration similaire à celle ci-dessous selon vos besoins.
jekyll-archives:
enabled: all
layouts:
year: archive/year
month: archive/month
day: archive/day
tag: archive/tag
category: archive/category
permalinks:
year: '/:year/'
month: '/:year/:month/'
day: '/:year/:month/:day/'
tag: '/tags/:name/'
category: '/category/:name/'
La layouts
peut utiliser les attributs de page suivants en fonction du archive type
.
year
, month
, day
, tag
, category
)Nil
sinon.)page.type
, vous devriez analyser le champ de date et mois)Voici un exemple de mise en page d'archive basé sur les années
<h1>Archive of posts from {{ page.date | date: "%Y" }}</h1>
<ul class="posts">
{% for post in page.posts %}
<li>
<span class="post-date">{{ post.date | date: "%b %-d, %Y" }}</span>
<a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
Je ne me souviens pas de la syntaxe exacte, mais quelque chose comme le code suivant devrait récupérer les noms de catégorie pour vous permettre de récupérer les publications pour chaque catégorie ...
{% for category in site.categories %}
{% assign cat_name = category[0] %}
{% for post in site.categories.cat_name %}
...
{% endfor%}
{% endfor %}