21

我的目标是创建从任何已发布的 jekyll 页面返回到其在 Github 上的位置的链接。

因此,在构建此 url 时,我需要访问页面的路径名。但是,我在提供此信息的模板的 api 中看不到任何内容。我查看了page的源代码,但是当通过模板访问时,所有文件/路径属性都没有值。

4

2 回答 2

38

更新:现在你可以使用{{page.path}}.


似乎您可以使用液体代码很好地构建您的链接:{{ page.url }}

例如,如果您希望此页面:http ://railsdocs.org/pages/get-involved.html链接到此页面:https ://github.com/dogweather/railsdocs.org/blob/gh-pages/ pages/get-involved.md

似乎您可以添加以下内容:

[source](https://github.com/dogweather/railsdocs.org/blob/gh-pages/{{page.url | replace:'.html','.md'}})

到降价并获得你想要的链接。

更通用的解决方案:

或者,我们可以编写一个允许页面直接访问其文件名的生成器。将此添加到目录中的.rb文件中_plugins

module Jekyll

  class PagePathGenerator < Generator
    safe true
    ## See post.dir and post.base for directory information. 
    def generate(site)
      site.posts.each do |post|
        post.data['path'] = post.name
      end

    end
  end

end

然后我们可以可靠地将帖子的文件名作为{{ page.path }}. 此解决方案比从 URL 转换更强大,因为页面名称在将其转换为 URL 时可能包含被“清理”出来的字符。(帖子还需要重新添加他们的日期信息等)。相反,这个插件让我们可以直接访问帖子的名称。

如果还需要该数据,类似的策略可以让我们获得帖子的路径。

于 2012-11-09T00:37:55.820 回答
18

我不确定这是什么时候添加的,但page.path给出了源文件相对于 Jekyll 根目录的路径。

于 2013-06-26T20:38:23.560 回答