【问题标题】:How to concatenate the value of iterator inside liquid tag (Jekyll)如何在液体标签内连接迭代器的值(Jekyll)
【发布时间】:2015-05-21 01:25:59
【问题描述】:

我正在循环一个 Yaml 对象,需要将 'i' 的值附加到正确对象的地址。

<div class="chapter">
  {% for i in (1..7) %}
    <strong class="title">{{ page.chapters.title + i }}</strong>
    <ul>
      {% for topic in page.chapters.ch + i %}
        <li>
          {{ topic }}
        </li>
      {% endfor %}
    </ul>
  {% endfor %}
</div>

数据:

---
layout: default
title: Home
chapters:
  title1: "CHAPTER 1: LEADERSHIP"
  ch1:
    - Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    - Aliquam tincidunt mauris eu risus.
    - Vestibulum auctor dapibus neque.

  title2: "CHAPTER 2: THE EXPERIENCE"
  ch2:
    - Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    - Aliquam tincidunt mauris eu risus.
    - Vestibulum auctor dapibus neque.
---

不起作用的部分是这样的:

{% for topic in page.chapters.ch + i %}

我需要 ch 的值为 ch1、ch2 等……

【问题讨论】:

  • page.chapters.ch 是字符串还是数字?
  • 这会起作用:{% for topic in page.chapters.ch1 %},或者这个:{% for topic in page.chapters.ch2 %},但我想使用循环来增加这些数字。
  • 这里提出了信息架构的问题。你的目标到底是什么?你想出版一本书吗?或者,您只是想控制单个帖子显示?你能多解释一下你的数据模型吗?

标签: ruby for-loop yaml jekyll liquid


【解决方案1】:

我通过更新数据模型和创建嵌套循环来实现这一点:

---
chapters:
  - title: "CHAPTER 1: LEADERSHIP"
   chapterList:
     - Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
     - Aliquam tincidunt mauris eu risus.
     - Vestibulum auctor dapibus neque.

 - title: "CHAPTER 2: THE EXPERIENCE"
   chapterList:
     - Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
     - Aliquam tincidunt mauris eu risus.
     - Vestibulum auctor dapibus neque.
---
<div class="chapter">
  {% for chapter in page.chapters %}
   <strong class="title">{{ chapter.title }}</strong>
     <ul>
        {% for chapterItem in chapter.chapterList %}
         <li>
            {{ chapterItem }}
         </li>
         {% endfor %}
     </ul>
  {% endfor %}
</div>

【讨论】:

    【解决方案2】:

    您可以将 YAML 作为 Ruby 关联数组进行访问,但使用 + 运算符的内联操作将不起作用。您可以使用append 过滤器来解决这个问题。

    试试这个:

    {% assign ch_key = 'ch' | append: i %}
    {% for topic in page.chapters[ch_key] %}
        <li>{{ topic }}</li>
    {% endfor %}
    

    【讨论】:

      猜你喜欢
      • 2016-05-04
      • 1970-01-01
      • 2014-02-04
      • 2019-02-14
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      相关资源
      最近更新 更多