2016-05-13 34 views
0

假設我想要自動生成頁面的_data文件夾中有一些數據。那就是:想象_data/structure.md的東西如下通過在Jekyll中編程生成文件

chapters: 
    - 
    chapter1 
    chapter2 
    chapter3 
    ... 

,我需要靜態文件chapter1.mdchapter2.md ...等,這些在結構上非常類似(比如,chapter1.md

--- 
title:chapter1 
layout: default 
--- 

This is chapter1!! 

) 。 有沒有辦法自動創建這些文件,而無需手動完成,只需更改或添加_data文件中的項目?

+0

內容(比如「This is chapter1 !!」)對於所有文件都需要不同嗎? –

+0

@DavidJacquel不同,但僅依賴參數'chapter1',也就是說,不需要比'_data'包含更多的信息 –

回答

1

您可以使用發電機(documentation)。 這可能是這樣的:

module Jekyll 

    class DataPage < Page 
    def initialize(site, base, dir, name) 
     @site = site 
     @base = base 
     @dir = dir 
     @name = name 
     self.process(@name) 
     self.data ||= {} 
     self.data['layout'] = 'default' 
     self.data['title'] = data 
    end 
    end 

    class CategoryPageGenerator < Generator 
    def generate(site) 
     datas = site.data['structure'] 
     datas.each do |data| 
     name = "#{data}.md" 
     page = Jekyll::DataPage.new(site, site.source, @dir, name) 
     page.data['title'] = data 
     page.data['layout'] = 'default' 
     page.content = "This is #{data}" 
     site.pages << page 
     end 
    end 
    end 

end 
+0

Works fine !!如何做同樣的事情,但將生成的文件保存在特定的文件夾中? (也就是'_site/chapters'而不是'_site'))我想'initialize'中需要額外的一段代碼 –

+1

:'@dir ='chapters'' –