如何在Shopify中使用循环打印项目?

时间:2019-03-13 08:40:03

标签: javascript shopify liquid

我对Shopify非常陌生,我正在尝试从阵列中打印项目。我已经使用Shopify CMS在文本字段中输入了文本。但是,当我在浏览器中加载页面时,看到的只是一个空的<ul>。因此,下面的循环有问题,但我无法弄清楚。任何帮助欢迎。

<div class="featured_item">
      <ul class="featured_item_list">
          {% for i in featured_items %}
          <li>
            <p>{{ i }}</p>
          </li>
          {% endfor %}
      </ul>
</div>


{% schema %}
  {
    "name": "Featured items",
    "class": "section section_homepage section_featured_items",
    "settings": [
        {
            "type": "text",
            "id": "itemOne",
            "label": "Item one text"
        },
        {
            "type": "text",
            "id": "itemTwo",
            "label": "Item two text"
        }
      ],
    "presets": [
        {
            "name": "Featured items",
            "category": "text"
        }
    ]
  }
{% endschema %}

{% stylesheet %}
{% endstylesheet %}

{% javascript %}
{% endjavascript %}

1 个答案:

答案 0 :(得分:2)

您将需要阅读有关节以及如何正确使用它们的更多信息:https://help.shopify.com/en/themes/development/sections

此刻,您正在尝试循环播放……什么都没有。

没有featured_items变量在任何地方分配,即使有,也没有块(可以循环的数组)。

当您位于某个节中并且想要从该节的架构中获取特定字段时,您始终要经过section

因此,您目前拥有以下内容:

"settings": [
    {
        "type": "text",
        "id": "itemOne",
        "label": "Item one text"
    },
    {
        "type": "text",
        "id": "itemTwo",
        "label": "Item two text"
    }
],

因此,您必须事先调用section,如果您想获取itemOne字段,则应像section.settings.itemOne那样调用它,因为itemOne位于设置部分。 / p>

第二个itemTwo应该也称为section.settings.itemTwo

<div class="featured_item">
      <ul class="featured_item_list">
        <li>
            <p>{{ section.settings.itemOne }}</p>
        </li>
        <li>
            <p>{{ section.settings.itemTwo }}</p>
        </li>
      </ul>
</div>

但是,由于要制作可重复的内容,实际上最好使用BLOCKS。

块的模式语法为:

{% schema %}
  {
    "name": "Featured items",
    "class": "section section_homepage section_featured_items",
    "blocks": [
      {
        "type": "some_type",
        "name": "Some Type",
        "settings": [
          {
            "id": "content",
            "type": "text",
            "label": "Content"
          }
        ]
      }
    ],
    "presets": [
        {
          "name": "Featured items",
          "category": "text"
        }
   ]
  }
{% endschema %}

然后由于块实际上是返回数组的可重复内容,因此您调用section.blocks进行循环,结果如下:

<div class="featured_item">
    <ul class="featured_item_list">
        {% for block in section.blocks %}
            <li>
            <p>{{ block.settings.content }}</p>
            </li>
        {% endfor %}
    </ul>
</div>

现在您有了可重复的块,可以添加多个乘积以创建动态列表,而不是固定数量。

请考虑阅读有关本节以及如何使用它们的更多信息,因为它们还有很多内容。