Ввод скидки не работает на странице корзины Shopify

Мне нужно ввести код купона на странице моей корзины, но, похоже, он не работает в простой форме:

<input class = "discount-code-field" autocomplete = "off" type = "text" name = "discount" placeholder = "Enter coupon code here" />

У меня это прямо перед кнопкой отправки, внутри формы.

Активные купоны не применяются к заказу на странице оформления заказа.

Есть ли что-то еще, что мне нужно сделать, чтобы он работал?

Редактировать: Форма выглядит так -

<form action = "/cart" method = "post" class = "cart">

  ............

  <div class = "bottom-box">
     <input class = "discount-code-field" autocomplete = "off" type = "text" name = "discount" placeholder = "Enter coupon code here" />
     <input type = "submit" value = "Proceed to checkout" name = "checkout" class = "cart-submit w-button"/>
  </div>
</form>

И он перенаправляет на такой URL-адрес: https://store.com/4934605xxxx/checkouts/04d6478feeb9d3262fbea5571b682ebc?_ga=2.260083023.358228188.1608464294-110675315.1604953057

В соответствии с документацией Shopify вы можете применять коды купонов только на странице оформления заказа, если вы хотите использовать их на странице корзины, вам нужно использовать для этого любое стороннее приложение.

Onkar 22.12.2020 13:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
1 701
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пока ваша корзина не использует AJAX для обновления и перенаправления, это должно работать.

Страница оформления заказа принимает аргумент получения ?discount=, и добавление поля с name = "discount" добавит этот аргумент к оформлению заказа.

Это работает, только если вы отправляете стандартную форму напрямую. (если вы обновите корзину, текст поля скидки не будет присутствовать, и вам нужно будет ввести его снова) Если вам нужно обновить форму, вам нужно будет каким-то образом сохранить код скидки, обновив корзину с помощью ajax или сохраняя его как файл cookie.

Итак, ваш код должен работать, я дважды проверил его в своем магазине разработки, и проблем нет, он применяет скидку к странице оформления заказа, поскольку присутствует аргумент get.

PS: Это не добавляет скидку к объекту корзины, это позволяет только перенаправлению оформления заказа включать аргумент get, ничего больше. Так что это эквивалентно созданию ссылки с <a href = "/checkout?discount=YOUR_CODE">Checkout</a>

Что, если я использую форму post? например <form action = "{{ routes.cart_url }}" method = "post" novalidate class = "cart">

Ricardo 22.12.2020 17:06

@Ricardo форма корзины по умолчанию POST. Тем не менее, он установит скидку в качестве параметра запроса, это не поведение по умолчанию, но они делают там некоторую «магию», и она становится параметром запроса.

drip 22.12.2020 17:11

Любые идеи о том, как отладить, почему это не работает?

Ricardo 22.12.2020 17:17

@Ricardo, вы ожидаете, что цены на странице корзины изменятся? (поскольку этого не произойдет) Пожалуйста, уточните, что вы подразумеваете под неработающим? Вы перенаправлены на страницу оформления заказа с аргументом get, присутствующим в URL-адресе, или нет? Если аргумент get отсутствует, значит, вы используете JS для перенаправления на страницу оформления заказа вместо обычной отправки формы.

drip 22.12.2020 17:27

Нет, мне не нужно обновлять номера на странице корзины. Я просто хочу, чтобы он применялся при оформлении заказа. Я обновил свой первоначальный вопрос, добавив больше кода и деталей.

Ricardo 22.12.2020 17:37

@Ricardo, в вашем URL-адресе оформления заказа есть ?_ga=2.260083023.358228188.1608464294-110675315.1604953057, значит, его что-то меняет. Пожалуйста, отключите свой JS из опции отладчика консоли разработчика и проверьте, не работает ли он.

drip 22.12.2020 17:51

Да, это работает с отключенным JS. Буду разбираться, чем это вызвано.

Ricardo 22.12.2020 18:54

Другие вопросы по теме

Похожие вопросы