web-dev-qa-db-fra.com

Jekyll afficher les articles par catégorie

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 %}
40
Alex G

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>
65
Alex G

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>
19
tim
<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 %}
1
Ilan Olkies

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 .

0
pgr

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.

  • page.type - (N'importe lequel des choix suivants. year, month, day, tag, category)
  • page.title - (Uniquement disponible pour la balise de type et la catégorie. Nil sinon.)
  • page.date - (Selon page.type, vous devriez analyser le champ de date et mois)
  • page.posts - (Liste des publications de cette archive)

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>
0
Raja Anbazhagan

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 %}
0
jtb