首页 > 解决方案 > jekyll:尝试从 _data/products.yml 输出产品数组时出错

问题描述

我正在尝试products.yml使用 _data 目录中的for loopjekyll构建产品列表,以便最终结果如下所示:使用 handlebars.js 构建的示例

首先,我编写了一个 YAML 文件,_data/products.yml其中包含一个按类别划分的产品列表

---
categories:
- Baking Products:
  - name: Vegetable oil
  - name: Vinegar
  - ...
- Dairy Products:
  - name: Cream Cheese
  - name: Cottage Cheese
  - ...
- Other Products:
  - name: Peanut butter
  - name: Chocolate spread
  - ...

现在我想遍历所有类别,并让每个类别都遍历其所有产品并显示有关它们的一些信息:

{% for category in site.data.products %}
  <div class="plist">
    <div class="category">
      <h3>{{ category.name }</h3>
      <span>Qty</span>
    </div>
    {% for product category.products %}
      <div class="product checkbox">
        <input type="checkbox" id="{{ product.name | capitalize }}" value="{{ product.name }}">
        <label  for="{{ product.name | capitalize }}">{{name}}</label>
        <select name="{{ product.name }}" id="{{ product.name | capitalize }}Q" autocomplete="off" class="dropdown">
          <option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option>
        </select>
      </div>
    {% endfor %}
  </div>
  {% if loop.index0 % 2 == 0 %}
    <break></break>
  {% endif %}
{% endfor %}

收到此错误:

Liquid 异常:Liquid 语法错误(第 13 行):变量 '{{ category.name }' 未使用 regexp: /}}/ in order.html 正确终止

杰基尔 3.8.5 | 错误:Liquid 语法错误(第 13 行):变量“{{ category.name }”未使用正则表达式正确终止:/}}/

标签: htmlyamljekyllliquid

解决方案


好的,这是固定代码。

谢谢@ashmaroli

{% for category in site.data.products %}
  <div class="plist">
    <div class="category">
      <h3>{{ category.name }}</h3>    <!-- missing "}" -->
      <span>Qty</span>
    </div>
    {% for product in category.products %}   <!-- missing "in" -->
      <div class="product checkbox">
        <input type="checkbox" id="{{ product.name | capitalize }}" value="{{ product.name }}">
        <label  for="{{ product.name | capitalize }}">{{name}}</label>
        <select name="{{ product.name }}" id="{{ product.name | capitalize }}Q" autocomplete="off" class="dropdown">
          <option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option>
        </select>
      </div>
    {% endfor %}
  </div>
  {% cycle '','<break></break>' %}   <!-- fixed -->
{% endfor %}

推荐阅读