通过 Twig 解析和使用列表项内容

Parsing and using list item content via Twig

我正在尝试使用 Grav 创建我的下一个网站。我可以做的一件事是使用使用模板的 Grav 页面中 Grav frontmatter 中提供的数据构建一个无序列表。这是我尝试这样做的方法

---
sectionone:
     listitems: "['Benefit 1','Benefit 2','Benefit 3']"
---

然后在模板中以某种方式执行以下操作

{% block featurelist %}
<ul>
{% set items = {{page.header.sectionone.consumers.benefits|json_decode}} %}
{% for item in {{}} %}
<li>{{item}}</li>
{% endfor %}
</ul>
{% endblock %}

然而,Twig 不喜欢这样,并报告了一个类似

的错误

Twig_Error_Syntax A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "punctuation" of value "{".

违规行是我的 {% set items = ... } 声明。我显然在这里做错了什么,但我是 Twig 新手,所以我看不出那可能是什么。

{% block featurelist %}
<ul>
   {% set items = page.header.sectionone.consumers.benefits|json_decode %}
   {% for item in items %}
      <li>{{item}}</li>
   {% endfor %}
</ul>
{% endblock %}

我终于想通了。 Grav 文档大体上非常好。但是,page headers/frontmatter 上的文档似乎有些不完整。没有对 frontmatter 处理器理解的整个语法的完整描述。为了在 front matter 中定义一个数组,您需要做的就是以下

---
sectionone:
 benefits: 
    - 'Benefit 1'
    - 'Benefit 2'
    - ...
---

本质上是无序列表的标准降价语法。 Grav 的 twig 处理器似乎将其转换为 PHP 数组 - 无需解析!