Liquid - 了解 'where' 的使用
Liquid - Understanding the use of the 'where'
我正在尝试在 shopify 中创建一个导航菜单,如果客户有标签 'X' 并且该标签 是 一个集合,则显示相应的集合link 在菜单中。虽然我不确定我是否正确理解 'where' 属性 的用法。
我对液体完全陌生,所以请原谅任何错误。
根据文档,位于 here。 'Where',创建一个数组,仅包含具有给定 属性 值的对象,或默认情况下的任何真值。所以理论上我认为我可以在我的 link 数组中使用它。
这是文档的示例
All products:
{% for product in products %}
{{ product.title }}
{% endfor %}
{% assign kitchen_products = products | where: "type", "kitchen" %}
Kitchen products:
{% for product in kitchen_products %}
{{ product.title }}
{% endfor %}
Output:
All products:
- Vacuum
- Spatula
- Television
- Garlic press
Kitchen products:
- Spatula
- Garlic press
这是我的尝试
<!-- custom collection loop for sidebar navigation -->
{% if customer.tags != blank %}
{% assign link = linklists.main-collections.links | where: link.title, customer.tags %} // This line in particular...
{% for link in linklists.main-collections.links %}
{% assign outer_index = forloop.index %}
{% if link.links != blank %}
{% assign has_active_link = false %}
{% if link.active or link.child_active %}
{% assign has_active_link = true %}
{% endif %}
<li class="site-nav--has-submenu site-nav__item"></li>
{% else %}
<li class="site-nav__item {{ collection.handle }}-collection {% if link.active %} site-nav--active{% endif %}">
<a href="{{ link.url }}" class="site-nav__link" {% if link.active %} aria-current="page" {% endif %}>{{ link.title | escape }}</a>
</li>
{% endif %}
{% endfor %}
{% endif %}
<!-- / end custom collection loop for sidebar navigation -->
如能就我的问题提供任何指导,我们将不胜感激。
进一步说明:
Customer A has the tags Apple, Pear, Peach
Collections exist for Apple, Pear Peach
预期输出:
<ul>
<li><a href="/apple">Apple</a></li>
<li><a href="/pear">Pear</a></li>
<li><a href="/peach">Peach</a></li>
</ul>
它不会那样工作有两个原因。
where
的第一部分采用 link
对象的字段 属性 键。所以应该是 "title"
而不是 link.title
- 第二部分应该是完全匹配条件,例如“Apple”或“Pear”。
customer.tags
是一个数组,或者 Shopify 称之为“drop”。
这里,由于标签总是唯一的,我们不需要使用where
您需要循环标记和链接。改用这个循环
{% if customer.tags.size >0 %}
{% for tag in customer.tags %}
{% for link in linklists.main-collections.links %}
{% if link.title == tag %}
... do magic here ...
{% endif %}
{% endfor %}
{% endfor %}
{% endif %}
我正在尝试在 shopify 中创建一个导航菜单,如果客户有标签 'X' 并且该标签 是 一个集合,则显示相应的集合link 在菜单中。虽然我不确定我是否正确理解 'where' 属性 的用法。
我对液体完全陌生,所以请原谅任何错误。
根据文档,位于 here。 'Where',创建一个数组,仅包含具有给定 属性 值的对象,或默认情况下的任何真值。所以理论上我认为我可以在我的 link 数组中使用它。
这是文档的示例
All products:
{% for product in products %}
{{ product.title }}
{% endfor %}
{% assign kitchen_products = products | where: "type", "kitchen" %}
Kitchen products:
{% for product in kitchen_products %}
{{ product.title }}
{% endfor %}
Output:
All products:
- Vacuum
- Spatula
- Television
- Garlic press
Kitchen products:
- Spatula
- Garlic press
这是我的尝试
<!-- custom collection loop for sidebar navigation -->
{% if customer.tags != blank %}
{% assign link = linklists.main-collections.links | where: link.title, customer.tags %} // This line in particular...
{% for link in linklists.main-collections.links %}
{% assign outer_index = forloop.index %}
{% if link.links != blank %}
{% assign has_active_link = false %}
{% if link.active or link.child_active %}
{% assign has_active_link = true %}
{% endif %}
<li class="site-nav--has-submenu site-nav__item"></li>
{% else %}
<li class="site-nav__item {{ collection.handle }}-collection {% if link.active %} site-nav--active{% endif %}">
<a href="{{ link.url }}" class="site-nav__link" {% if link.active %} aria-current="page" {% endif %}>{{ link.title | escape }}</a>
</li>
{% endif %}
{% endfor %}
{% endif %}
<!-- / end custom collection loop for sidebar navigation -->
如能就我的问题提供任何指导,我们将不胜感激。
进一步说明:
Customer A has the tags Apple, Pear, Peach
Collections exist for Apple, Pear Peach
预期输出:
<ul>
<li><a href="/apple">Apple</a></li>
<li><a href="/pear">Pear</a></li>
<li><a href="/peach">Peach</a></li>
</ul>
它不会那样工作有两个原因。
where
的第一部分采用link
对象的字段 属性 键。所以应该是"title"
而不是 - 第二部分应该是完全匹配条件,例如“Apple”或“Pear”。
customer.tags
是一个数组,或者 Shopify 称之为“drop”。
link.title
这里,由于标签总是唯一的,我们不需要使用where
您需要循环标记和链接。改用这个循环
{% if customer.tags.size >0 %}
{% for tag in customer.tags %}
{% for link in linklists.main-collections.links %}
{% if link.title == tag %}
... do magic here ...
{% endif %}
{% endfor %}
{% endfor %}
{% endif %}