2012-06-24 22 views
4

我有一個基本的佈局頁面模板:使用此作爲頁面模板傑奇 - 分裂的內容分成兩列

--- 
layout: default 
--- 

<header class="sidebar"> 
    {{ page.title }} 
</header> 

<section class="content"> 
    {{ content }} 
</section> 

我的頁面是被裝進<section>塊剛剛降價。

我正在尋找一種方法來將我的所有頁面內容保留在一個文件中,但具有此功能,因此我可以定義單獨的內容,將其從頁面模板中放入<header>標記。

有什麼辦法可以做到這一點,並保持所有頁面的內容在一個文件中?

回答

5

您可以通過定義您想分開並在_includes/目錄中重複使用的內容來完成此操作。

然後,您可以通過調用例如:{% include file.ext %}來包含它,以包含文件名_includes/file.ext(幾乎就像複製並粘貼它一樣)。

請參閱Jekyll文檔here中有關_includes的章節。

5

YAML Front Matter可用於直接存儲頁面的其他內容。這是通過創建自定義鍵/值變量來完成的。佈局/模板使用液體標籤來檢查輔助內容是否可用。如果是這樣,它會得到輸出。否則,該部分被跳過。

下面是一個檢查,看看是否被設置稱爲myvar1自定義變量佈局模板的一個例子:

--- 
layout: default 
--- 

<header class="sidebar"> 

    <h2>{{ page.title }}</h2> 

    {% if page.myvar1 %} 
     <p>Secondary content here: {{ page.myvar1 }}</p> 
    {% endif %} 

</header> 

<section class="content"> 
    {{ content }} 
</section> 

注:爲了配合你的原來的例子,這個佈局文件調用父「默認」佈局。對於這個例子,上面是一個名爲「_layouts/nested_layout.html」的佈局文件。

要使用新的插槽,myvar1變量被添加到前面的問題,像這樣:

--- 
layout: nested_layout 
title: This is the post test layout 
myvar1: More here <strong>including bold text</strong>. 
--- 

And here is the page content: The quick brown fox jumps over the lazy dog. 

當處理該頁面中,輔助內容將出現。如果您創建另一個沒有myvar1的頁面,則該模板的該部分不會顯示任何內容。

您可以根據需要爲您的頁面添加儘可能多的自定義變量。值可以包括HTML,如本例所示。 (它適用於Jekyll 0.11.2。)如果你有很多你想要添加的代碼(而不是一些容易放在一行上的代碼),或者如果你想擁有相同的內容來打開/關閉多個頁面時,可以使用自定義變量作爲標誌。然後,在{%if%}標記中,如果設置了值,則會調用include。