Shopify Script Tag - PullRequest
       12

Shopify Script Tag

0 голосов
/ 02 июля 2018

Я добавляю скрипт скрипт в свой магазин через API. Тег скрипта загружается нормально. В тег скрипта я добавил этот код:

Shopify.onItemAdded = function(line_item) {
  console.log(line_item.title + ' was added to your shopping cart.');
};

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

Можете ли вы, ребята, сказать, что я могу делать не так.

1 Ответ

0 голосов
/ 02 июля 2018

Тема, в которую загружен ваш скрипт, может не использовать ajax-cart. Насколько я знаю, нет универсального способа следить за корзиной на предмет добавляемых товаров, так как есть несколько способов, которые могут произойти.

Один из способов добавления товаров в корзину - через традиционный POST, поэтому никаких событий не будет, поэтому, если вы проверяете корзину, вам придется делать это при загрузке страницы. В этом случае вы можете кэшировать клиентскую часть корзины в window.sessionStorage и проверять ее при загрузке страницы на предмет изменений.

Если ваш сценарий установлен на сайте, который использует своего рода добавление ajax в корзину или обновление корзины, вы можете сохранить корзину в sessionStorage при загрузке страницы, а затем провести разумный опрос файла cart.js и сравнить его с сохраненная корзина Это потенциально очень недружелюбно для мобильных пользователей, но я вижу худшие вещи в аккаунтах людей.

Если используется ajax-cart, ваш скрипт сломает другие интеграции с ним. Потому что на самом деле это не вечерняя библиотека, вам нужно что-то вроде:

(function(){
    var defaultAction = Shopify.onItemAdded;
    Shopify.onItemAdded = function(line_item){
        if(defaultAction){
            try{
                defaultAction.apply(Shopify, arguments);
            }finally{
                //your override
                console.log(line_item.title + ' was added to your shopping cart.');
            }
        }
    };
})()

Другой способ обработки обновлений корзины - это немного усилий.

Вашему приложению требуется прокси-сервер приложения, клиент веб-сокетов и веб-крюк для обновления карты. Прокси-сервер приложения предоставляет тот же канал хоста для клиента websocket.

Когда страница загружается, вы проверяете наличие корзины. Если у вас есть корзина, вы открываете соединение через веб-сокет и регистрируете маркер корзины.

Если приложение получает обновление корзины, соответствующее вашему токену, оно отправляет корзину вашему прослушивателю веб-сокетов.

Это не работает, если ваша корзина обновляется через ajax, но не через API ajax-cart, поэтому вы вернулись к опросу об этой начальной загрузке корзины.

...