有没有办法在Jekyll上获取页面的网址?页面上的意思是非邮寄纺织品文件,例如以下层次结构中的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>
这适用于帖子,因为它们的网址已包含在the post's to_liquid method中。另一方面,页面似乎没有包含类似的东西 - 它们确实具有我需要的属性(或者it seems),但它们不会在to_liquid
上导出它们;我想重新定义它,所以它确实如此。有没有办法做到这一点?
我找到了jekyll_extensions,但我不知道它是否适用于我的目标环境(github页面)。
如果可能的话,我想避免在所有yaml头上包含url参数。
非常感谢!
答案 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