如何编写一个修改`site`对象的Jekyll插件?

时间:2014-11-10 21:43:52

标签: ruby jekyll

我想编写一个修改site对象的Jekyll插件。整个Jekyll构建过程中都可以使用site对象。在Jekyll中,向其添加属性的最直接方法是在_config.yml文件中定义它。这在某些情况下有效,但我需要更进一步。

我问这个问题的原因是因为我需要在YAML文件的上下文中做更多的事情。我想为site对象添加一个方法。我假设我只需要将方法添加到Site类,但它不起作用。

非工作插件:

module Jekyll
  class Site
    def foo
      "foo"
    end
  end
end

我假设从阅读Jekyll源代码以及如何扩展Ruby类,Jekyll中的site对象将采用新的foo方法,但它并没有。供参考,here is the Site Class in the Jekyll source code

这是一个很大的问题,因为我很难阅读Jekyll构建的RUby代码,因为这是关于Jekyll本身的问题。

1 个答案:

答案 0 :(得分:0)

也许你可以在没有插件的情况下做到这一点。灵感来自Jekyll Bootstrap,您可以制作一个全局变量来定位您的资产文件夹。

<强> _config.yml

# can be '' or '/repositoryName'
baseurl: /repositoryName

ASSET_PATH : /assets

<强> _layouts / default.html中

---
front mater ...
---
{% capture ASSET_PATH %}{{ site.baseurl }}{{ ASSET_PATH }}{% endcapture %}

然后从帖子或页面调用资产:

<link href="{{ ASSET_PATH }}/bootstrap/css/bootstrap.min.css" rel="stylesheet">

or

![img title]({{ ASSET_PATH }}/img/toto.jpg)