2012-06-05 32 views
5

我對Jekyll和Ruby非常新穎(但是,非常興奮,)。在Jekyll中過濾site.related_posts

沒有使用插件,我試圖找到一種方法來過濾site.related_posts

例如,我正在閱讀標題爲Foo和類別A, B的文章。

該網站總共含有3個帖子:

  1. Foo(類別:A,B)
  2. Bar(類別:A,C,d)
  3. Zoo(類別:B,F)

由默認,傑奇在我們這樣做:

{%用於後在site.related_posts極限:5%}
{%ENDFOR%}

然而,上述代碼返回所有的(3)的職位。

一個帖子包含很多類別,所以類別應該是一個數組。

如何修改代碼並僅返回那些類別與當前帖子類別相交的代碼?

(在這個例子中,我想代碼只返回FooZoo。)

+0

請注意,默認情況下,「相關帖子」其實只是最近的帖子。在_config.yml中設置'lsi:true'或者用'--lsi'運行Jekyll以獲得更高質量的結果。 –

回答

5

我沒有現在來測試這種權利的能力,但這樣的事情會工作給予Liquid's有限的語法:

{% for post in site.related_posts limit:5 %} 
    {% assign match = false %} 
    {% for category in post.categories %} 
    {% if page.categories contains category %} 
     {% assign match = true %} 
    {% endif %} 
    {% endfor %} 
    {% if match %} 
    <li><a href="{{ post.url }}">{{ post.title }}</a></li> 
    {% endif %}      
{% endfor %} 
+0

爲了更好的結果,我嘗試使用'site.posts'代替'site.related_posts limit:5'的代碼。非常感謝! –

+0

液體的文件的偉大鏈接,這已經打開了我的眼睛。 – kiewic

1

確保每個崗位都有在YAML前面的問題類別,然後添加這個到您想顯示的帖子有關CATEGORY_NAME:

{% for post in site.categories.CATEGORY_NAME %} 
    <li> 
     <a href="{{ post.url }}"> 
      <img src="{{ post.thumbnail }}"> 
      <p>{{ post.excerpt }}</p> 
     </a> 
    </li> 
{% endfor %}