Я хотел бы установить хеш-переменную, используя строки из массива динамически (вместо написания 1000 строк кода).
Также я хотел бы использовать динамически создаваемую строку для доступа к хешу, используя его в качестве ключа - для встроенного (я предполагаю, что хеш) объекта - настроек. Настройки позволяют вам получить доступ к данным в settings_schema.json, например: settings.my_custom_setting
Согласно этой документации: https://github.com/Shopify/liquid/wiki/Liquid-for-Designers
«Для хэшей ключ должен быть литеральной строкой в кавычках или выражением, которое преобразуется в строку.»
поэтому я попытался {% assign filter [thisFilter] = false%}, но получил ошибку: ParseError: недопустимый токен
Первый выпуск / доступ к хеш-ключу с переменной:
{% comment %} All possible filters {% endcomment %}
{% assign allFilters = "color,size,collection,style,height,function,artist" %}
{% assign allFiltersArray = allFilters | split ',' %}
{% comment %} hash of filters each set to false {% endcomment %}
{% for thisFilter in allFiltersArray %}
{% assign filter[thisFilter] = false %}
{% endfor %}
Вторая проблема, доступ к объекту настроек с помощью динамически генерируемого ключа:
{% comment %} set to true whichever filters are configured in settings for this collection {% endcomment %}
{% for thisCollection in allCollectionsArray %}
{% if thisCollection == currentCollection %}
{% for thisFilter in allFiltersArray %}
{% assign itemToCheck = "filter_" | append: thisCollection | append: "_" | append: thisFilter %}
{% if settings[itemToCheck] %}
{% assign filter[thisFilter] = true %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
В первом выпуске я ожидаю, что результатом будет хеш, такой как:
filter ['color'] = false (или filter.color = false)?
фильтр ['размер'] = ложь
Во втором выпуске я ожидаю что-то вроде:
{% if settings.filter_shirts_color%}