Как видно из заголовка, я хочу обновить мою тему Shopify Debut, чтобы показать и скрыть дополнительные текстовые поля, содержащие вариант метаполя в зависимости от выбранного варианта раскрывающегося списка.
Вот раскрывающийся список выбора HTML:
<select class="single-option-selector single-option-selector-product-template product-form__input" id="SingleOptionSelector-0" data-index="option1">
<option value="Option no 1" selected="selected">This is option 1</option>
<option value="Option no 2">This is option 2</option>
<option value="Option no 3">This is option 3</option>
</select>
В шаблоне Shopify product.liquid это выглядит так - я добавил id = "{{option.id}}" ввариант, но он не заполняет его при тестировании, я надеялся, что это будет способ сопоставления как опции select, так и div вместе.
<select class="single-option-selector single-option-selector-{{ section.id }} product-form__input" id="SingleOptionSelector-{{ forloop.index0 }}" data-index="option{{ forloop.index }}">
{% for value in option.values %}
{% if option.selected_value == value %}
<option id="{{variant.id}}" value="{{ value | escape }}"{% if option.selected_value == value %} selected="selected"{% endif %}>{{ value }}</option>
{% else %}
<option id="{{variant.id}}" value="{{ value | escape }}"{% if option.selected_value == value %} selected="selected"{% endif %}>{{ value }}</option>
{% endif %}
{% endfor %}
</select>
Затем я хочу показать метаполе выбранного варианта продукта (option.description) в зависимости от выбранной переменной продукта.В настоящее время я использую следующий код (это ссылка на магазинную жидкость) для извлечения всех вариантов метаполей, которые будут готовы показать и скрыть:
{% for variant in product.variants %}
<div class="variantoption" id="{{variant.id}}">
{% if current_variant.id %}
{{ variant.metafields.option.description }}
{% else %}
{% endif %}
</div>
{% endfor %}
Я понимаю, что мне нужно либо добавитьнекоторый пользовательский javascript для выбора или альтернативного подключения к теме Shopify js, чтобы показать / скрыть опции метаполя выбранного варианта.Это может быть основано на идентификаторах, но я изо всех сил пытаюсь вытащить их на страницу в окне выбора, плюс все учебники, с которыми я сталкивался, ссылаются на функцию «selectCallback», но ее нет в теме «Дебют» - этотема Shopify на основе сланца.
Помощь при завершении этого динамического отображения / скрытия вариантов метаполей на основе выбранной опции будет наиболее ценной!
/ * ОБНОВЛЕНИЕ * /
Мне удалось добраться до этой стадии с кодом:
_updateMetaDescription: function(evt) {
var variant = evt.variant;
var urlvariant = GetURLParameter('variant'); // finds variant parameter in URL
var currentvar = $('.variantoption' + '#' + urlvariant); // looks for div with class MetaDescription & ID with the same variant as in the URL
if (currentvar) {
// The variant exists, remove hide class.
$(this.selectors.metaDescription).removeClass('hide');
}
else {
$(this.selectors.metaDescription).addClass('hide');
}
},
Проблема в том, что он удаляет класс 'hide' для всех идентификаторов.Почему-то он не распознает правильный идентификатор, связанный с DIV.