【问题标题】:Liquid for loop not working properly in Jekyll循环液体在 Jekyll 中无法正常工作
【发布时间】:2012-02-10 10:01:40
【问题描述】:

我在 Jekyll 中使用液体 for 循环来显示基于此 YAML 结构的页面内容:

work_left:
  isitgo:
    image: /images/isitgo.png
    caption: isitgoonair.net homepage
    description: a website
  disko:
    image: /images/disko.png
    caption: Disko
    description: a website
work_right:
  qfi:
    image: /images/qfi.png
    caption: qfi.im
    description: a website

这是for循环:

{% for item in page.work_left %}
    {{ item.image }}
{% endfor %}

item.image 不会导致字符串/images/isitgo.png/images/disko.png 被输出。
如果我只是做{{ item }},结果如下:

isitgo
{
    "image"=>"/images/isitgo.png",
    "caption"=>"isitgoonair.net homepage",
    "description"=>"an awesome website i made"
}

disko
{
    "image"=>"/images/disko.png",
    "caption"=>"Disko",
    "description"=>"that site"
}

这是什么原因造成的?

【问题讨论】:

    标签: yaml jekyll liquid


    【解决方案1】:

    由于液体解析关联数组的方式,您得到了这些结果 - 这就是 work_left 的含义。在每次迭代中,您都会获得两项:“键”和“值”。

    我警告您,在某些情况下,这会给您带来问题。值得注意的是,项目出现的顺序并不能保证 - isitgo 可能出现在磁盘之后。 (据我所知,这取决于您使用的 ruby​​ 版本)。

    如果您想确保始终以相同的顺序获取work_left 的内容,则必须使用list of associative arrays 而不是关联数组的关联数组,就像您所做的那样。下面是它的外观:

    work_left:
      - name: isitgo
        image: /images/isitgo.png
        caption: isitgoonair.net homepage
        description: a website
      - name: disko
        image: /images/disko.png
        caption: Disko
        description: a website
    work_right:
      - name: qfi
        image: /images/qfi.png
        caption: qfi.im
        description: a website
    

    然后是打印它们的代码:

    {% for item in page.work_left %}
      {{ item.name }}
      {{ item.image }}
    {% endfor %}
    

    【讨论】:

    • 哇!非常感谢!尝试了半个小时,但不知道在 YAML 中邻接-。 +1
    【解决方案2】:

    看来用 for 循环创建的项目必须被视为一个数组。

    所以对于我来说:

    {% for item in page.work_left %}
         {{ item[0] }}
    {% endfor %}
    

    将输出返回的(2 项)数组的第一个元素,它是一个字符串:isitgo disko{{ item[1].image }} 将访问返回数组的第二项(一个变量)的 .image 属性,并将显示 /images/isitgo.png /images/disko.png

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多