2014-07-11 17 views
7

Tôi đang cố gắng xuất danh sách các bài đăng trên blog cho một tác giả nhất định. Tôi đã thử điều này trong đó bộ lọc Jekyll:Tại sao chất lỏng Jekyll này không lọc bộ lọc?

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

Nhưng nó sẽ xuất mỗi bài đăng. Tôi không rõ tôi đang làm gì sai.

Trả lời

9

giả sử rằng tác giả bài viết của bạn là trong vấn đề phía trước của bạn, như thế này:

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

Nếu bạn muốn bài cuối cùng hai của tác giả == toto, chỉ cần làm:

{% 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: Và một giải pháp sử dụng các nơi lọc thay cho mệnh đề 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 là đúng Tôi không cần hai vars tôi (counter2 và maxPostCount2), Tôi có thể sử dụng giới hạn Liquid for loop: n.

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

Tốt hơn!

+0

Ah! Cảm ơn nhiều. – Justin

+0

Ví dụ về bộ lọc nơi bạn không cần logic truy cập và bạn có thể xóa hoàn toàn nếu bạn không muốn đánh số danh sách (bạn có thể thực hiện với thẻ OL). – Justin

+0

Logic truy cập ở đây để giới hạn số lượng kết quả trả về. –

0

Có vẻ như bộ lọc này chỉ được sử dụng bên trong các thẻ đầu ra (những bao quanh bởi {{}} Mà có nghĩa là bạn có thể sử dụng một cái gì đó như:.

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

Nhưng bạn không thể sử dụng nó theo cách bạn làm

Nguồn:. liquid documentation on Filters

+0

bạn có thể làm như sau: http://www.leveluplunch.com/blog/2014/04/03/sort-pages-by-title-filter-array-by-layout-jekyllrb/ ie '{% assign posts = (site.posts | where" author "," mike ")%}'? – nrob

Các vấn đề liên quan