2016-05-13 45 views
0

我想寫一個生成器插件來添加一些類似帖子的項目到我的博客。這些項目應該出現在博客索引中,但他們沒有與他們關聯的頁面(您不能點擊它們)。將帖子添加到Jekyll索引頁面,沒有.md文件

我知道我需要像

class QuoteGenerator < Generator 
    safe true 

    def generate(site) 
    # add a single post 
    site.posts << QuotePost.new(site, site.source, "Blub") 
    end 
end 

但我不明白的是如何實現我的Post子類。我發現,其他插件(如this one to embed Flickr photos)寫任何他們想要減價+ YAML文件中的數據,然後引用此文件:

class QuotePost < Post 
    def initialize(site, base, title) 
    # Nooo, I don't want to create a .md file for this 
    name = "2016-05-13-test.md" 
    dir = "" 
    # (write out .md file here) 
    super(site, base, dir, name) 
    end 
end 

但後來,我很難需要一個插件在首位。我可以自己生成降價文件(使用外部腳本)。

我想要做的就是在Post子類中設置幾個變量,並將它們放在博客索引的模板中。我怎樣才能做到這一點?

+0

爲什麼不使用'output:false'的集合?數據來自哪裏? –

回答

0

您描述的情況看起來與Post無關,因爲通常的帖子是基於文件的。集合可能是合適的,但又是如此 - 你不清楚如何獲取內容。

我建議兩個主要選擇:

  1. 使用_data /設置對象列表,其中每個項目都有必需的屬性,如果你可以通過一個靜態的JSON/CSV的/ etc文件中定義它們(或者生成一次,以分離外部數據生產者和jekyll可視化)。

  2. 用途:pre_render hook如果您通過代碼來定義數據的插件 -

你的鉤子也將獲得一個有效載荷散列作爲它允許你在完全控制第二個參數在渲染時可用的變量

使用site.data變量中的數據可以遍歷項目,渲染某些內容或包含模板等。還有一些插件可以根據網站的數據生成新的頁面。

正確的答案取決於您如何獲取內容,您需要哪種標記以及這些項目將如何使用。