【问题标题】:Weird issue with "menus" Liquid object“菜单”液体对象的奇怪问题
【发布时间】: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 官方文档中看到了这个参考。

标签: shopify liquid


【解决方案1】:

液体中没有menus对象。

我不知道你从哪里得到那个对象引用。

代码应该如下。

{% for link in linklists.main-menu.links %}
  {% if collection.handle == link.handle %}
    <p>test</p>
  {% endif %}
  {% assign linkTitleHandleize = link.title | handleize %}
  <p>linklists[collection.handle] returns {{ linklists[collection.handle] }}</p>
  <p>linklists["bags"] returns {{ linklists["bags"] }}</p>
  <p>linklists[link.handle] returns {{ linklists[link.handle] }}</p>
  <p>linklists[linkTitleHandleize] returns {{ linklists[linkTitleHandleize] }}</p>
{% endfor %}

请注意它只会返回[Object],因为您指的是https://help.shopify.com/en/themes/liquid/objects/linklist

【讨论】:

  • 其实 Shopify 在文章顶部引用了它:“提示链接列表对象在 Shopify 后台的 Navigation 页面中称为“菜单”。”
  • 所以,主要问题不在于如何创建正确的代码(我知道该怎么做)。它是关于液体引擎/语言的工作原理以及为什么它会为同一个键输出如此奇怪的数组结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-19
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多