【问题标题】:How to access non current for-loop elements using the Liquid template system如何使用 Liquid 模板系统访问非当前 for 循环元素
【发布时间】:2018-07-12 19:58:43
【问题描述】:

我正在尝试访问上一个和下一个数组中的元素。液体/杰基尔甚至可能吗?我想访问页面的上一个和下一个 url。 这是我到目前为止所做的。
提前致谢。

为了确保该液体在我的网站上正常工作,我通过输出当前页面 url 进行了测试:

{{venue.url}}
//this line also works
{{page.url}}

这就是我如何挑战从 yml 文件中获取数据的数组

{% assign page_venue = site.data.venues-array | where: "venueID",   page.venue | first %}

这是 yml 文件的一部分:

venueID: Red-Radish
name: Red Radish
url: redradish
building: 65
neighborhood: University Union

venueID: Poly-Deli
name: Poly Deli
url: polydeli
building: 19
neighborhood: University Union

venueID: Myrons
name: Myron's
url: myrons
previous: MustangStation
building: 19
neighborhood: University Union

所以我无法输出这样的内容(只有当前的 url 有效):

当前网址:polydeli
上一个网址:reddish
下一个网址:myrons

我尝试了以下方法,但没有任何效果:

<p>{{page.next.url}}</p>
<p>{{venue.next.url}}</p>
<p>{{paginate.next.url}}</p>
<p>{{paginator.next_page}}</p>

【问题讨论】:

  • 上下文不清楚。你能再解释一下并显示一些代码吗?
  • 我刚刚添加了代码,谢谢大卫!
  • previousnext 对于常规页面不存在。它们只存在于帖子和自定义集合中。
  • 所以没有办法访问前一个和下一个数组中的 url 值?甚至没有定义某种 for 循环?

标签: jekyll liquid liquid-layout


【解决方案1】:

更新:

首先,您需要正确格式化场地数组.yml 文件,如下所示:

- venueID: Red-Radish
  name: Red Radish
  url: redradish
  building: 65
  neighborhood: University Union

- venueID: Poly-Deli
  name: Poly Deli
  url: polydeli
  building: 19
  neighborhood: University Union

- venueID: Myrons
  name: Myron's
  url: myrons
  previous: MustangStation
  building: 19
  neighborhood: University Union

然后您可以像这样访问下一个和上一个 URL:

{% for venue in site.data.venues-array %}

  {% assign next = forloop.index0 | plus: 1 %}
  {% assign previous = forloop.index0 | minus: 1 %}
    <div>Name: {{ venue.name }}</div>
    <div>Current URL: {{ venue.url }}</div>

    <div>Previous url:{{ site.data.venues-array[previous].url }}</div>
    <div>Next URL is:{{ site.data.venues-array[next].url }}</div>
    <hr>

{% endfor %}

这将是什么:

Name: Red Radish
Current URL: redradish
Previous url:myrons
Next URL is:polydeli
Name: Poly Deli
Current URL: polydeli
Previous url:redradish
Next URL is:myrons
Name: Myron's
Current URL: myrons
Previous url:polydeli
Next URL is:

【讨论】:

  • 谢谢,但由于某种原因 {{ previous.url }} 和 {{ next.url }} 无法正常工作。
  • 嗨查理,抱歉我之前没有测试过。更新后的答案已经过测试并且很有效:)
  • 谢谢基思!使用该代码可以输出整个餐馆列表。你知道我能做什么,所以我一次只能输出一家餐厅。像这样: 名称:红萝卜 当前网址:redradish 上一个网址:myrons 下一个网址是:polydeli
  • 嗨,我想你想给场地分页。我是否正确地说您想要每个场地一个页面,该页面将包含一个场地信息以及指向上一个和下一个场地的链接?如果是这样,您将需要使用分页插件或使用 javascript 快速破解它。无论如何,请接受此答案,因为它回答了您的问题(访问 for 循环元素),并随时向我发送分页问题的链接,我将详细回答。
  • 嗨 Keith,这里是链接 stackoverflow.com/questions/51488205/… 谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-01-09
  • 2021-10-30
  • 2020-04-14
  • 2019-06-02
  • 2016-02-12
  • 2015-12-18
  • 1970-01-01
  • 2021-07-13
相关资源
最近更新 更多