#javascript #jquery #shopify
#javascript #jquery #Shopify
Вопрос:
В настоящее время я пытаюсь получить Shopify cart.js чтобы добавить мои товары в корзину.
Раньше он работал отлично, но когда я добавил варианты, он начал ломаться, и, хоть убейте, я не могу заставить его работать. При нажатии на кнопку — он вообще не добавляет товар в сумку.
<form action="/cart/add" method="post" data-cart-submit>
{% if product.variants.size > 1 %}
<div class="w-form">
<div class="inpost-form-option w-clearfix">
<label class="inpost-form-label">{{ product.options.first }}</label>
<select id="variant-select" class="inpost-quantity w-select">
{% for variant in product.variants %}
{% if variant.available == true %}
<option value="{{ variant.id }}">{{ variant.title }}</option>
{% endif %}
{% endfor %}
</select>
</div>
</div>
{% endif %}
<button class="inpost-buy w-button" type="submit" data-cart-add="{{ variant.id }}">Add to Bag →</button>
</form>
Добавлен Javascript
<script type="text/javascript">
jQuery(function() {
CartJS.init({{ cart | json }});
});
</script>
Ошибка консоли
shop_events_listener-91b4691….js: 1 СООБЩЕНИЕhttps://monah-uk.myshopify.com/cart/add.js 404 (Не найден)
Комментарии:
1. Похоже, что к кнопке пытаются добавить жестко закодированный идентификатор варианта, но на него ссылаются за пределами
for
цикла, гдеvariant
определена переменная. Это означало бы установку data-cart-add в пустую строку, поэтому, если предполагается, что именно так товары попадают в корзину, ничего не будет добавлено. Однако без javascript просмотр формы — это просто дикое массовое угадывание — не могли бы вы также найти функцию javascript, которая должна выполняться? Если в консоли есть какие-либо ошибки, связанные с добавлением продукта, обмен ими также поможет.2. Я добавил javascript, который запускается в моей теме. жидкий файл к вопросу.
3. Ах! С CartJS, похоже, вы используете тему Focal или Kagami?
4. Ошибка 404 (не найдена) обычно означает, что скрипт пытался добавить идентификатор варианта, которого не существует в вашем магазине. Если вы откроете инструменты отладчика на вкладке сеть и попытаетесь добавить товар в корзину (это поможет очистить журнал перед тем, как вы это сделаете, если что-то уже появилось), следите за вызовом /cart/add.js . В деталях для этой записи вы должны увидеть раздел данных запроса. Как минимум, необходимо передать параметр с именем ‘id’, и этот параметр ‘id’ должен соответствовать одному из вариантов идентификаторов, присутствующих в вашем магазине.
5. Чтобы получить список идентификаторов вариантов, которые есть в вашем продукте, для регистрации в вашей консоли, вы можете добавить эту комбинацию Liquid / javascript:
{% if product %}<script>console.log({{ product.variants | map: 'id' | json }})</script>{% endif %}
— это позволит вам легко сравнить то, что передается в конечную точку AJAX, с реальными существующими вариантами.