jekyll - 在github页面上自动向页面添加内容

时间:2010-05-28 11:12:06

标签: ruby github monkeypatching jekyll jekyll-extensions

有没有办法在Jekyll上获取页面的网址?页面上的意思是非邮寄纺织品文件,例如以下层次结构中的about.htmldownload.html

root
 |
 +- _includes
 |
 +- _layouts
 |
 +- _posts
 |
 +- _config.yml
 |
 +- index.textile
 |
 +- about.textile
 |
 `- download.textile

我想做这样的事情:

<h1><a href="{{ page.url }}">{{ page.title }}</a></h1>

这适用于帖子,因为它们的网址已包含在the post's to_liquid method中。另一方面,页面似乎没有包含类似的东西 - 它们确实具有我需要的属性(或者it seems),但它们不会在to_liquid上导出它们;我想重新定义它,所以它确实如此。有没有办法做到这一点?

我找到了jekyll_extensions,但我不知道它是否适用于我的目标环境(github页面)。

如果可能的话,我想避免在所有yaml头上包含url参数。

非常感谢!

3 个答案:

答案 0 :(得分:3)

我认为答案是肯定的。这是关于全局page项中的内容的the Jekyll wiki

  

对于帖子,这是YAML Front Matter中的数据和计算数据(例如URL和日期)的并集。对于常规页面,这只是YAML Front Matter。

即使您可以重新配置Jekyll的引擎在本地为您完成,我也不确定您是如何在Github自己的Pages上完成这项工作的(因为他们将使用香草Jekyll而不是您的)。

答案 1 :(得分:3)

现在可以通过新的插件系统monkeypatch jekyll类!

只需在_plugins目录中添加此文件(page.rb):

module Jekyll
  class Page
    def to_liquid
      self.data.deep_merge({
        "url" => File.join(@dir, self.url),
        "content" => self.content,
        "dir" => self.dir,
        "name" => self.name,
        "ext" => self.ext,
        "basename" => self.basename
      })
    end
  end
end

我刚刚修改了to_liquid,但我还可以添加更多方法等。

答案 2 :(得分:1)

看起来像page.rb to_liquid现在支持您需要的“网址”数据......

https://github.com/mojombo/jekyll/blob/master/lib/jekyll/page.rb