Jekyll页面如何访问其文件名?

Jekyll页面如何访问其文件名?,jekyll,Jekyll,我的目标是创建从任何已发布的jekyll页面到其在Github上的位置的链接 因此,在构建这个url时,我需要访问页面的路径名。但是,我在api中没有看到任何提供此信息的模板。我查看了页面的源代码,但是当通过模板访问时,没有一个文件/路径属性有值。更新:现在您可以使用{{page.path} 似乎您可以使用液态代码构建链接:{{{page.url} 例如,如果希望此页面:链接到此页面: 似乎您可以添加以下内容: [source](https://github.com/dogweather/ra

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


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

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


似乎您可以使用液态代码构建链接:
{{{page.url}

例如,如果希望此页面:链接到此页面:

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

[source](https://github.com/dogweather/railsdocs.org/blob/gh-pages/{{page.url | replace:'.html','.md'}})
到降价,并获得你想要的链接

一个更普遍的解决方案: 或者,我们可以编写一个生成器,允许页面直接访问其文件名。将其添加到
\u plugins
目录中的
.rb
文件中:

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
模块杰基尔
类PagePathGenerator<生成器
安全真实
##有关目录信息,请参阅post.dir和post.base。
def生成(站点)
site.posts.each do| post|
post.data['path']=post.name
结束
结束
结束
结束
然后我们就可以可靠地得到帖子的文件名为
{{page.path}
。此解决方案比从URL转换更健壮,因为页面名称在转换为URL时可以包含“净化”的字符。(帖子还需要添加日期信息等)。相反,这个插件让我们可以直接访问帖子的名称


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

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

我想你是在寻找标记源的路径,而不是相对URL源?例如,对于页面
http://mysite.com/2012/11/08/mypost.html
您可能需要类似于
http://github.com/myname/mysite/tree/master/_posts/2012-11-08-mypost.md
?正确。虽然我只对网页感兴趣,对帖子不感兴趣。我正在制作一个类似于frontend的wiki。请参见按钮栏。例如,从我想要链接到其回购URL的页面。如果一个页面可以得到它的文件/路径名,我可以确定GitHub上的URL。几乎。。。问题是,例如.md vs..html文件扩展名。好的,忘了这一点。我们可以用一个简单的方法来处理这个问题。有几个选项,我在上面的编辑中建议了一个,但也可以使用remove或其他方法。是的,我想到了,如果我想强制使用这个约束,每个html都是一个md文件。也许……我不清楚为什么需要为页面混合使用
.md
.html
扩展。大多数markdown解析器将只保留html,因此您可以简单地为它们提供所有
.md
扩展。将更清楚地指示源文件与输出文件。否则,我们可以编写一个在所有页面上运行的,greps为gh pages链接,并将
.md
更改为
.html
,如果输入文件是
.html
。我认为转换器是唯一一个可以进入扩展的阶段。这看起来比液体过滤器和页面的一致扩展更粗糙。是的,
page.path
现在是访问原始未处理文件路径的最佳方式。请参阅“页面变量”下的内容。是的,现在本机支持
{{Page.path}
非常好