Странная проблема с «меню» жидкого объекта - PullRequest
0 голосов
/ 14 марта 2019

У меня есть вопрос об объекте 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:

test

menu [collection.handle] возвращает EmptyDrop

menu ["bags»] возвращает EmptyDrop

menu [link.handle] возвращает LinkListDrop

menu [linkTitleHandleize] возвращает LinkListDrop

По какой-то причине объект menus возвращает ожидаемый массив меню «bag», только когда ключ равен link.handle или преобразован link.title | handleize (имейте в виду, что переменная linkTitleHandleize является простой строкой).

ЕслиЯ пытаюсь передать ту же строку, но collection.handle или даже простой строкой (в моем случае это "сумки"), тогда menus ничего не возвращает.Я очень сбит с толку, так как строки равны (см. Условие в строке 2 - оно возвращает true, а «test» - рендеринг). Это очень странное поведение, и до этого дня я думал, что хорошо знаю Liquid.

UPD: я должен перефразировать мой вопрос.Дело не в том, как создать рабочую версию кода.Это своего рода исследование: почему Liquid возвращает EmptyDrop для menu [collection.handle] и для menu ["bags»] и почему он возвращает LinkListDrop для menu [link.handle] и для menu [linkTitleHandleize] в случае, когда linkTitleHandleize = link.handle = collection.handle = "сумки".Спасибо!

1 Ответ

1 голос
/ 14 марта 2019

В жидкости нет объекта 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...