我想编写一个修改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本身的问题。
答案 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)