2016-05-13 84 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变量中的数据可以遍历项目,渲染某些内容或包含模板等。还有一些插件可以根据网站的数据生成新的页面。

正确的答案取决于您如何获取内容,您需要哪种标记以及这些项目将如何使用。

相关问题