【发布时间】:2019-03-14 10:41:59
【问题描述】:
我有一个关于对象menus 的问题,它类似于linklist。它有一个奇怪的行为。
这里是代码。第 6-9 行包含 4 个类似的指令,用于从 menus 对象获取菜单:
{% for link in linklists.main-menu.links %}
{% if collection.handle == link.handle %}
<p>test</p>
{% endif %}
{% assign linkTitleHandleize = link.title | handleize %}
<p>menu[collection.handle] returns {{ menus[collection.handle] }}</p>
<p>menu["bags"] returns {{ menus["bags"] }}</p>
<p>menu[link.handle] returns {{ menus[link.handle] }}</p>
<p>menu[linkTitleHandleize] returns {{ menus[linkTitleHandleize] }}</p>
{% endfor %}
所以html输出是:
测试
menu[collection.handle] 返回 EmptyDrop
menu["bags"] 返回 EmptyDrop
menu[link.handle] 返回 LinkListDrop
menu[linkTitleHandleize] 返回 LinkListDrop
由于某种原因,menus 对象仅在键为 link.handle 或转换后的 link.title | handleize 时返回预期的“bags”菜单数组(请记住,变量 linkTitleHandleize 只是一个普通字符串)。
如果我试图通过collection.handle 或什至通过纯字符串(在我的情况下是“bags”)传递相同的字符串,那么menus 什么也不返回。我很困惑,因为字符串是相等的(参见第 2 行的条件 - 它返回 true 并且“测试”正在呈现)这是一个非常奇怪的行为,在此之前我以为我非常了解 Liquid。
UPD:我必须重新表述我的问题。这不是关于如何创建代码的工作版本。这是一种研究:为什么 Liquid 会为 menu[collection.handle] 和 menu["bags"] 返回 EmptyDrop,以及为什么它会为 menu[link.handle] 和 menu[linkTitleHandleize] 返回 LinkListDrop,以防当 linkTitleHandleize = link .handle = collection.handle = "包"。谢谢!
【问题讨论】:
-
链接列表对象是“菜单”,“链接列表对象在 Shopify 后台的导航页面中称为“菜单”。” - docs menus 正是 shopify 管理 ui 中引用的链接列表对象
-
好的,谢谢。我在 Shopify 官方文档中看到了这个参考。