Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shopify “奇怪的问题”;菜单“;液体物体_Shopify_Liquid - Fatal编程技术网

Shopify “奇怪的问题”;菜单“;液体物体

Shopify “奇怪的问题”;菜单“;液体物体,shopify,liquid,Shopify,Liquid,我有一个关于对象菜单的问题,它类似于链接列表。它有一种奇怪的行为 这是代码。第6-9行包含从菜单对象获取菜单的4条类似指令: {% for link in linklists.main-menu.links %} {% if collection.handle == link.handle %} <p>test</p> {% endif %} {% assign linkTitleHandleize = link.title | handleize %

我有一个关于对象
菜单
的问题,它类似于
链接列表
。它有一种奇怪的行为

这是代码。第6-9行包含从
菜单
对象获取菜单的4条类似指令:

{% 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 %}
{%用于链接列表中的链接。主菜单。链接%}
{%if collection.handle==link.handle%}
试验

{%endif%} {%assign linkTitleHandleize=link.title | handleize%} menu[collection.handle]返回{{menu[collection.handle]}

菜单[“包”]返回{{菜单[“包”]}

menu[link.handle]返回{{menu[link.handle]}

菜单[linkTitleHandleize]返回{{菜单[linkTitleHandleize]}

{%endfor%}
因此,html输出为:

试验

菜单[collection.handle]返回EmptyDrop

菜单[“行李”]返回清空菜单

菜单[link.handle]返回LinkListDrop

菜单[linkTitleHandleize]返回LinkListDrop

出于某种原因,
菜单
对象仅在键为
link.handle
或转换为
link.title | handleize
时返回预期的“bags”菜单数组(请记住变量
linkTitleHandleize
只是一个普通字符串)

如果我试图通过
collection.handle
或甚至是普通字符串(在我的例子中是“bags”)传递相同的字符串,则
菜单
不返回任何内容。我很困惑,因为字符串是相等的(请参见第2行的条件-它返回true,并且“test”正在渲染),这是一个非常奇怪的行为,在这之前我认为我对Liquid非常了解


UPD:我必须重新表述我的问题。它不是关于如何创建代码的工作版本。这是一种研究:为什么液体会为菜单[collection.handle]和菜单[“bags”]返回EmptyDrop,为什么在linkTitleHandleize=link.handle=collection.handle=“bags”的情况下为菜单[link.handle]和菜单[linkTitleHandleize]返回LinkListDrop。谢谢大家!

液体中没有
菜单
对象

我不知道你从哪里得到的对象引用

代码应该如下所示

{% 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 %}
{%用于链接列表中的链接。主菜单。链接%}
{%if collection.handle==link.handle%}
试验

{%endif%} {%assign linkTitleHandleize=link.title | handleize%} linklists[collection.handle]返回{{linklists[collection.handle]}

LinkList[“bags”]返回{{LinkList[“bags”]}

linklists[link.handle]返回{{linklists[link.handle]}

linklists[linkTitleHandleize]返回{{linklists[linkTitleHandleize]}

{%endfor%}

请注意,它将只返回
[对象]
,因为您指的是

链接列表对象是“菜单”,“链接列表对象在Shopify管理员的导航页面中称为“菜单”。-菜单正是Shopify管理员UI中所指的链接列表对象是的,谢谢。我在Shopify官方文档中看到了这个引用。实际上,Shopify在文章的顶部提到了它:“Tip linklist对象在Shopify管理员的导航页面中称为“菜单”。因此,主要问题不是如何创建正确的代码(我知道怎么做)。这是关于液体引擎/语言是如何工作的,以及为什么它为同一个键输出如此奇怪的数组结果。