Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Jekyll中的集合获取当前url_Jekyll - Fatal编程技术网

从Jekyll中的集合获取当前url

从Jekyll中的集合获取当前url,jekyll,Jekyll,如果我想获取页面的url,它并不复杂: page.url 但是,如果我制作了一个集合,它将被用作包含而不是页面,该怎么办 如果我创建这样一个集合并请求page.url,它会给出集合的路径,而不是当前url的路径 有没有办法在Jekyll中获取真实的当前URL 编辑:示例 test.md: --- title: Test page permalink: /test/ --- Test page {% for block in site.blocks %} {% if block.w

如果我想获取页面的url,它并不复杂:

page.url
但是,如果我制作了一个集合,它将被用作包含而不是页面,该怎么办

如果我创建这样一个集合并请求
page.url
,它会给出集合的路径,而不是当前url的路径

有没有办法在Jekyll中获取真实的当前URL

编辑:示例


test.md:

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

Test page

{% for block in site.blocks %}
    {% if block.whatever %}
        {{ block.content }}
    {% endif %}
{% endfor %}
---
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 %}
---
whatever: true
---

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

得到:


预期:

Test page

test.md

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

为了达到预期的效果,我使用了Jekyll液体过滤器

以下是您如何根据您的问题获得预期结果: test.md:

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

Test page

{% for block in site.blocks %}
    {% if block.whatever %}
        {{ block.content }}
    {% endif %}
{% endfor %}
---
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 %}
---
whatever: true
---

{{ page.relative_path | replace:'index.html', '' | remove: '_blocks/' | prepend: site.baseurl }}
测试页面上的输出 更新:

也许下面的方法不是获取当前url路径的最简单方法,但是通过在文档的前端定义中定义
相对路径:
,您也会得到您期望的结果,当然这是每页都需要的

--- 
whatever: true
relative_path: test.md
---

{% page.relative_path %}
所以在这个非常特殊的情况下

{%page.relative_path%}

应该输出

test.md
杰基尔医生提醒: 根据,当您创建一个集合时,它将通过
site
Liquid变量变得可用,非常类似于
site.posts
site.pages
,因此在大多数情况下您都可以使用可用的过滤器


我希望有帮助

杰基尔的行为在3.0中发生了变化吗?从我的示例中,我可以猜到在您的示例中,
page.relative_path
会导致
/block.md
,但实际上不确定,可能是这样。我刚刚检查了Jekyll-v=3.0,因此液体标签存在于我的project.html布局中的_Layouts和我的公文包集合
页面中。相对路径
导致
\u公文包/test project.md
,无论如何,我认为这只是调整过滤器的问题。这可能不是一个巨大的成就,但至少在我尝试制作与你在这里描述的非常相似的东西时,它起了作用。