2014-07-11 13 views
7

Sto provando a generare un elenco di post di blog per un certo autore. Ho provato questo filtro Jekyll:Perché questo liquido di Jekyll non è il filtro?

{% for post in (site.posts | where:"author", "mike") %} 
    {{ post.title }} 
{% endfor %} 

Ma emette ogni post. Non sono chiaro cosa sto sbagliando.

risposta

9

Supponendo che il tuo post autore è nella vostra materia fronte, in questo modo:

--- 
author: toto 
... 
--- 

Se volete due ultimo post per autore == toto, basta fare:

{% assign counter = 0 %} 
{% assign maxPostCount = 2 %} 
<ul> 
{% for post in site.posts %} 
    {% if post.author == 'toto' and counter < maxPostCount %} 
    {% assign counter=counter | plus:1 %} 
    <li>{{ counter }} - {{ post.title }}</li> 
    {% endif %} 
{% endfor %} 
</ul> 

Et hop!

EDIT: E un'altra soluzione che utilizza il filtro in cui al posto della clausola if:

{% assign posts = site.posts | where: "author", "toto" %} 
{% assign counter2 = 0 %} 
{% assign maxPostCount2 = 3 %} 
<ul> 
{% for post in posts %} 
    {% if counter2 < maxPostCount2 %} 
    {% assign counter2=counter2 | plus:1 %} 
    <li>{{ counter2 }} - {{ post.title }}</li> 
    {% endif %} 
{% endfor %} 
</ul> 

RE-EDIT: Justin è giusto Non ho bisogno i miei due Vars (Counter2 e maxPostCount2), Posso usare il limite Liquid for loop: n opzione.

{% assign posts = site.posts | where: "author", "toto" %} 
<ul> 
{% for post in posts limit:3 %} 
    <Ol>{{ post.title }}</ol> 
{% endfor %} 
</ul> 

Meglio!

+0

Ah! Grazie molto. – Justin

+0

Per l'esempio del filtro where non è necessario il contatore logico ed è possibile rimuoverlo completamente se non si desidera numerare l'elenco (cosa che si potrebbe fare comunque con un tag OL). – Justin

+0

La logica del contatore è qui per limitare il numero di risultati restituiti. –

0

Sembra filtri devono essere utilizzati solo all'interno di tag di uscita (quelli circondati da {{ e }} che significa che si potrebbe usare qualcosa come:.

{{ site.posts | where "author", "mike" }} 

Ma non si può usare nel modo che sei facendo

Fonte:. liquid documentation on Filters

+0

si può fare in questo modo: http://www.leveluplunch.com/blog/2014/04/03/sort-pages-by-title-filter-array-by-layout-jekyllrb/ cioè '{% assign posts = (site.posts | where" author "," mike ")%}'? – nrob

Problemi correlati