У меня есть вопрос об объекте 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 = "сумки".Спасибо!