在模板中使用內容區塊(以特殊的標籤語法添加),是向作者提供額外功能的最佳方式。
最常見的用途,就是在轉製書籍時,透過某些標籤的指引處理內容。有點像是強化後的 filters,因為你可以使用多種表達式來完成目的。
內容區塊(block)其實像是管理視圖(Views)的一個小幫手(helper),它如何處理內容,是由另一個控制器(Controller)、也就是一段 JavaScript 程式來控制。
內容區塊(blocks)是由外掛定義的,它有特定的名稱,並與一個 block descriptor 關聯在一起。一個 block descriptor 至少需要包含一個處理(process)方法。
module.exports = {
blocks: {
tag1: {
process: function(block) {
return "Hello "+block.body+", How are you?";
}
}
}
};
內容區塊的處理程序,必須回傳要拿來替代區塊標籤的 HTML 內容。請參照 情境與 APIs 一章的內容,學習 this
與 GitBook API 的使用方法。
模板語法可以將參數送進內容區塊中:
{% tag1 "argument 1", "argument 2", name="Test" %}
This is the body of the block.
{% endtag1 %}
內容區塊的處理程序就可以使用這些參數:
module.exports = {
blocks: {
tag1: {
process: function(block) {
// block.args equals ["argument 1", "argument 2"]
// block.kwargs equals { "name": "Test" }
}
}
}
};
內容區塊可以被拆解成多個次級區塊,像是下面的範例:
{% myTag %}
Main body
{% subblock1 %}
Body of sub-block 1
{% subblock 2 %}
Body of sub-block 1
{% endmyTag %}