Я не уверен, пытаетесь ли вы обновить значение с помощью жидкости (что невозможно) или используете форму (которая не работает так, как вы описываете).
1) Вы можете переназначить объекты
Это недействительный код {% assign item.product.id = 3962085671002 %}
.
Назначение используется для создания или перезаписи переменных. Вы не можете использовать его для изменения объектов и их значений.
2) Когда вы обновляете корзину, вы должны сделать это через JS.
Если вы не хотите менять местами Для указания c товара из корзины вы должны использовать конец /cart/update.js
, см. документы для справки: https://help.shopify.com/en/themes/development/getting-started/using-ajax-api#update -cart
3) Когда вы добавляете товары в корзину Вы должны использовать их variant.id
.
Все продукты в Shopify используют варианты (даже если у них их нет, у них есть скрытый по умолчанию), которые вы покупаете. Таким образом, вы должны передать variant.id
, а не product.id
.
. Поэтому, если вы хотите поменять местами определенный продукт c, используя cart/update.js
, вы должны нацелиться на variant.id
.
Так что же вам делать?
Вы все еще можете проверить {% if item.product.id == 4456879030362 %}
, но в этот момент у вас есть несколько вариантов.
1) Добавить специфицированный c класс к элементу и нацельте этот класс с помощью javascrip, чтобы заменить элемент на новый из внешнего файла javascript.
2) Добавьте код JS непосредственно в оператор IF и поменяйте местами продукт с /cart/update.js
еще раз.
{% for item in cart.items %}
{% if item.product.id == 4456879030362 %}
<script>
jQuery.post('/cart/update.js',
"updates[{{item.id}}]=0&updates[{{YOUR_NEW_VARIANT_ID}}]=1"
);
</script>
...
{% endif %}
{% endfor %}