我是Shopify和Liquid的新手。我知道你不能在另一个液体标签中嵌套一个液体标签,例如:
{% something {{ something_else }} %}
我想知道是否有解决这种情况的方法?可能涉及到"捕捉"或"raw"的巧妙使用?
我正在建立一个网站,使用产品标签来表示哪些巧克力在哪些产品中(巧克力集合)。在产品页面上,我可以很容易地将标签作为列表返回:
<ul class="chocolates-menu">
{% for tag in product.tags %}
<li><a href="/collections/all/{{ tag | handleize }}">{{ tag }}</a></li>
{% endfor %}
</ul>
然而,我想呈现片段与文件名匹配标签的名称(这些将包含图像,巧克力名称和巧克力描述),即:
<li><a href="/collections/all/{{ tag | handleize }}">{% render '{{ tag }}' %}</a></li>
我得到的最接近的是:
{% for tag in product.tags %}
{% capture chocolate_tag %}
{% raw %}{% render{% endraw %} {% raw %}'{% endraw %}{{ tag }}{% raw %}' %}{% endraw %}
{% endcapture %}
<li><a href="/collections/all/{{ tag | handleize }}">{{ chocolate_tag }}</a></li>
{% endfor %}
这将输出正确的代码,但作为页面上的文本(而不是解析它)。例如:{% render 'Tag Name Here' %}简单地作为列表项的文本。任何聪明的人的帮助,我都很感激。谢谢。
我建议为所有巧克力创建一个代码片段,并使用标签作为变量来输出所需的内容。
这是我的意思的视觉表现,从你与@Fabio Filippi的讨论中更清晰一些
snippets/chocolate.liquid
{% assign tag_image = tag | append: '.png' %}
{% case tag %}
{% when 'diet' %}
<img src="{{ tag_image | file_img_url: '100x' }}" class="responsive" />
{% when 'dark' %}
<div>My dark chocolate HTML</div>
{% when 'white' %}
<div>My white chocolate HTML</div>
{% endcase %}
和如何使用:
{% render 'chocolate', tag: tag %}