我对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 %}
答案 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>
现在您有了可重复的块,可以添加多个乘积以创建动态列表,而不是固定数量。
请考虑阅读有关本节以及如何使用它们的更多信息,因为它们还有很多内容。