Hello,
Dans la réalisation de mon nouveau blog sous Jekyll, un petit soucis vient de se montrer.
Dans le cas d'une pagination il m'est impossible de faire la condition après la boucle for pour l'affichaque des articles, cela pause des problème dans le "comptage" des articles par page.

Je recherche juste à afficher par exemple tous les articles ayant dans "sa config" publie: 1 afin de gérer un système de brouillon. Ou encore afficher une catégorie à part des autres articles et cie.

Auriez-vous une idée ? Je n'ai rien trouvé dans la doc Liquid.

Thx

5 réponses


Je suis tombé sur cet article, je n'utilise pas jekyll mais peut être ça t'aidera :(
http://www.evanlovely.com/blog/technology/jekyll-featured-post-with-limit-and-offset/

Peux-tu poster ton code pour que l'on puisse y regarder de plus prêt ?

iooner
Auteur

@maximeshr, je vais exposer avec le code d'exemple.
Donc le suivant affiche le nom d'article par page en fonction du _config. Admettons ici 5.

{% for post in paginator.posts %}
  <h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
  <p class="author">
    <span class="date">{{ post.date }}</span>
  </p>
  <div class="content">
    {{ post.content }}
  </div>
{% endfor %}

Si j'ajoute un if dans la condition, il se peut qu'il ne me retire des articles donc en avoir 4 sur la première page ou aucun.

{% for post in paginator.posts %}
  {% if post.public == 1%}
    <h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
    <p class="author">
      <span class="date">{{ post.date }}</span>
     </p>
     <div class="content">
       {{ post.content }}
    </div>
  {% endif %}
{% endfor %}

Donc voila ou se situe mon problème. Je vais toutefois regarder le lien de Grafikart ;)

Si je comprends bien, tu souhaites créer des draft ? Pourquoi ne pas utiliser le module draft disponible ?
Concernant l'autre partie du problème (le paginator), je pense que tu as mal compris la fonctionnalité.

Le paginator.posts morcelle le nombre de posts et ce sans conditions spécifiques.
Admettons que sur tes cinq derniers posts, trois possèdent l'attribut active à 0. Dès lors ta boucle affichera uniquement deux éléments sur cinq car les 3 autres sortent de ta boucle.

Voici une issue GitHub concernant ce problème.

Et pour la réponse : "No, paginator does not currently allow paging over groups of posts linked by a common tag or category."

Après, tu peux éventuellement essayer de gérer une pagination en JavaScript ou de te créer un module qui va te pré-filtrer tes posts avant de les injecter dans le paginator. A voir également si il n'y a pas un pipe conditionnel au niveau du paginator du style :

{% for post in paginator.posts | post.active == 1 %}
iooner
Auteur

Justement la condition dans le for c'est la question que je me posais.