работа со «строками» как «массивами» в Shopify жидкость - PullRequest
1 голос
/ 07 января 2020

Я пытаюсь отобразить цветные поля рядом с элементами, основанными на элементах. Тем не менее, это дало мне странные результаты в моем массиве. Да, я знаю, что в жидкости нет настоящих массивов. У меня есть два варианта ниже. Первый не работает. Это дает мне такие вещи, как "background-color: ['' '' '' '". Вместе со всеми правильными тоже.

Итак, во втором варианте я просто жестко закодировал все цвета и проверил это. Это работает до тех пор, пока цвета в порядке ... но если цвета не в порядке, то он будет отображать дубликаты.

Впервые на жидкость, но это кажется супер уродливым и, вероятно, означает, что я делаю это неправильно.

    <div class="color-box-wrapper">
        {% assign values = '' %}
        {% for variant in product.variants %}
        {% assign value = variant.option2%}
        {% unless values contains value %}

        {% assign values = values | append: ',' | append: value %}
        {% assign values = values | split: ',' %}

        {% for color in values %}
        {% if color.size > 0%}

        <div class="product-color-box" style="background-color:{{color}}"></div>

        {% endif %}
        {% endfor %}
        {% endunless %}
        {% endfor %}

    </div>

ЭТОТ ПУТЬ КИНДА РАБОТАЕТ, НО ВИДЕТСЯ ХАКИ.

 <div class="color-box-wrapper">
        {% assign realColors = 'yellow, blue, white, burgandy, black, red, green, purple, beige, light_brown' | split: ", "%}
        {% assign values = '' %}
        {% for variant in product.variants %}
        {% assign value = variant.option2 | downcase%}
        {% unless values contains value %}

        {% assign values = values | append: ',' | append: value %}
        {% assign values = values | split: ',' %}

        {% for color in values %}
        {% if realColors contains color %}

        <div class="product-color-box" style="background-color:{{color}}"></div>

        {% endif %}
        {% endfor %}
        {% endunless %}
        {% endfor %}

    </div>

1 Ответ

0 голосов
/ 08 января 2020

Может быть лучше использовать поле product.options_with_values, что-то вроде этого:

{% assign color_option = product.options_with_values | where: 'name', 'color' | first %}
<h1>Color option is in position {{ color_option.position }}!</h1>
<h2>Array of all values is: {{ color_option.values | json }}</h2>


{% for value in color_option %}
  <h3>Gimmie a {{ value }}!! {% if value == color_option.selected_value %}(Selected){% endif %}</h3>
{% endfor %}

Немного сложнее, если ваши цвета не распознаются CSS именами цветов, но, безусловно, есть количество вещей, которые вы можете сделать для этого. Обычно я предпочитаю добавлять слой CSS, который может преобразовывать значения цвета в соответствующие значения отображения (либо фоновые изображения, либо шестнадцатеричные коды цвета). Вот некоторые идеи:

  • Добавьте атрибут элемента или класс к своему элементу (обычно для фильтрации используются стандартный фильтр | handle) и используйте лист CSS, чтобы соответствующим образом назначить фоновые изображения или цвета
  • Создать раздел с блоками, который позволяет отображать значения цвета в шестнадцатеричные коды. Если вы создаете это для кого-то, кроме вас, это позволит торговцу самостоятельно настроить цвета и точно настроить все оттенки.
  • Используйте метаполя в вашем продукте, которые могут генерировать правильный цветовой код, используя параметры в качестве поиска. (Например: если вы создаете пространство имен метаполя для ваших продуктов product.metafields.colors и используете имена цветов в качестве ключей и шестнадцатеричные коды в качестве значений, вы можете вывести {{ product.metafields.colors[value] }}, чтобы получить правильный цвет компьютера. (Обычно для этого требуется установить приложение для управления - хотя сами метафайлы являются собственными функциями Shopify, Shopify не имеет никакого собственного способа установить их в админке)

Надеюсь, это поможет!


Ссылки :

Ссылка Shopify Liquid - объекты продукта: https://help.shopify.com/en/themes/liquid/objects/product#product -options_with_values ​​

Ссылка Shopify Liquid - объекты параметров продукта (из options_with_values): https://help.shopify.com/en/themes/liquid/objects/product_option

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