从Jekyll的集合中获取当前URL

时间:2015-06-27 20:00:44

标签: jekyll

如果我想要一个页面的网址,那不是很复杂:

page.url

但是,如果我创建一个集合的工作,那么它会像包含而不是像页面一样被使用?

如果我制作这样的集合并要求page.url,它会给我一个集合的路径,而不是当前网址的路径。

有没有办法在Jekyll中获取真正的当前网址?

编辑:示例

test.md:

---
title: Test page
permalink: /test/
---

Test page

{% for block in site.blocks %}
    {% if block.whatever %}
        {{ block.content }}
    {% endif %}
{% endfor %}

_blocks / block.md:

---
whatever: true
---

{% page.relative_path %}

GOT:

Test page

/_blocks/block.md

预期:

Test page

test.md

1 个答案:

答案 0 :(得分:0)

我一直在使用jekyll很短的时间,我依靠集合来构建我的第一个静态投资组合网站。到目前为止,我尝试获取当前URL的路径时的所有尝试都失败了。

为了达到理想的效果,我使用了Jekyll Liquid过滤器。

以下是根据您的问题获得预期结果的方式:

test.md:

---
whatever: true
---

{{ page.relative_path | replace:'index.html', '' | remove: '_blocks/' | prepend: site.baseurl }}

_blocks / block.md:

Test page

test.md

测试页面上的输出

relative_path:

<强>更新

以下可能不是获取当前网址路径的最简单方法,但通过在文档的前端定义中定义--- whatever: true relative_path: test.md --- {% page.relative_path %} ,您也可以获得预期的结果,当然,这是每页所需要的。

{% page.relative_path %}

所以在这个非常具体的案例中

test.md

应输出

site

杰基尔的医生提醒:

根据Jekyll's doc,当您创建一个集合时,它会通过site.posts Liquid变量提供,非常类似于site.pages[StackView][1],因此您可以在大多数情况下能够使用可用的过滤器。

我希望它有所帮助!