2017-02-04 38 views
1

我已經有了一套結構化的集合頁面,結構看起來是這樣的,當訪問元數據:如何使用「其中」過濾

chapter1 
    section1 
    section2 
    section3 
chapter2 
    section1 
    section2 
    section3 
chapter3 
    section1 
    section2 
    section3 

是每個呈現其自身的一個單獨的頁面固定鏈接。

假設我想鏈接到chapter3/section1,我該怎麼做?我想使用液體where過濾器,但這似乎給我的頁面內容,而不是元數據。

{% assign section_post = site.chapters | where:"url","chapter3/section1" %} 
{{ section_post }} 

這使我得到適當的頁面,但不是正確的內容。如果我在我的佈局中寫下這些,我什麼也得不到:

<a href="{{ section_post.permalink }}">{{ section_post.title }}</a> 

我在做什麼錯了?如何使用where過濾器獲取元數據?我有一堆頁面,因此循環遍歷它們是非常低效的...

回答

1

問題是where表達式返回給定條件的數組中的所有對象

[#<Jekyll::Document _chapters/chapter3/section1 collection=chapters>] 

在這種情況下,您所期待的對象名單隻返回一個單一的項目,所以我們可以用first液體標籤(返回數組的第一個元素),選擇該項目。

{% assign ch3s1 = site.chapters | 
    where:"id","/chapters/chapter3/section1" | first%} 

    title: {{ch3s1.title}} 
    <br> 
    url: {{ch3s1.url}} 

將輸出所需的部分:

title: Chapter 3 section 1 
    url: /chapters/chapter3/section1 
+1

完美!現在我只需要返回並重構所有那些for循環! –

相關問題