ПРИМЕЧАНИЕ: это будет работать только в том случае, если правильная цена товара уже зарегистрирована, когда вы добавляете товар в корзину (например, вариант 1 = £ 5, вариант 2 = £ 10, если вы измените выбор на вариант 2,один раз выбранный, если он не правильно отображает свою цену на странице продукта, но затем, когда вы нажимаете добавить в корзину, в корзину добавляется элемент варианта 2).
Потратив большую часть дня, пытаясь найти ценныйресурсы и этот пост, не получая жару, я думал, что это будет расшевелить. Я решил пойти другим путем.
При создании выпадающего списка я создал атрибуты данных и подарил им цены для каждой позиции.
<select name="id" id="ProductSelect-{{ section.id }}" class="product-single__variants product-variant-selector"{% if product.variants.size == 1 %} style="visibility: hidden;"{% endif %}>
{% for variant in product.variants %}
{% if variant.available %}
<option {% if variant == product.selected_or_first_available_variant %} selected="selected" {% endif %} data-sku="{{ variant.sku }}" value="{{ variant.id }}" data-compare-price="{{ variant.compare_at_price | money }}" data-regular-price="{{ variant.price | money }}">
<div class="variant-title">{{ variant.title }}</div>
–
{% if current_variant.compare_at_price > current_variant.price %}
<div class="variant-compare-price">RRP: {{ variant.compare_at_price | money }} </div>
{% endif %}
<div class="variant-regular-price">{% if current_variant.compare_at_price > current_variant.price %}NOW: {% endif %}{{ variant.price | money }}</div>
</option>
{% else %}
<option disabled="disabled">
{{ variant.title }} - {{ 'products.product.sold_out' | t }}
</option>
{% endif %}
{% endfor %}
</select>
Затем я использую довольноБазовый jQuery для изменения значений:
<script>
(function($) {
var comparePrice = $('.product-compare-at-price');
var regularPrice = $('.product-regular-price');
var variantOptions = $('.product-variant-selector');
if ( variantOptions.length ) {
variantOptions.on('change', function() {
var cPrice = $(this).find(":selected").attr("data-compare-price");
comparePrice.html(cPrice);
var rPrice = $(this).find(":selected").attr("data-regular-price");
regularPrice.html(rPrice);
});
}
})(jQuery);
</script>
Это затем изменяется, когда выбор делает, и функциональность добавления правильного предмета в корзину остается неизменной.
Спасибо, Джейсон.