0

有没有办法在 Jekyll 上获取页面的 url?我所说的页面是指非发布纺织品文件,例如about.html以下download.html层次结构:

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

我想做这样的事情:

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

这适用于帖子,因为它们的 url 包含在帖子的 to_liquid 方法中。另一方面,页面似乎不包含任何类似的东西 - 它们确实具有我需要的属性(或者看起来如此),但它们不会将它们导出到to_liquid; 我想重新定义它。有没有办法做到这一点?

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

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

非常感谢!

4

3 回答 3

3

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

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

即使您可以重新配置 Jekyll 的引擎以在本地为您执行此操作,我不确定您如何在 Github 自己的页面上进行这项工作(因为他们将使用原版 Jekyll 而不是您的)。

于 2010-05-28T11:41:31.527 回答
3

现在可以通过其新的插件系统对 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在这里进行了修改,但我还可以添加更多方法等。

于 2010-06-26T15:29:40.940 回答
1

It looks like page.rb to_liquid does now support the "url" data your need...

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

于 2011-02-06T05:49:24.200 回答