Для добавления или удаления товара в корзину/избранное/сравнение необходимо передать id товара через глобальную функцию. Операции по добавлению/удалению происходят на вашей стороне. Со своей стороны передаётся только информация по товару:
В зависимости от того, какие необходимо реализовать функции, названия будут отличаться, но начинаться все будут одинаково — window.digiLayer.###.
Для того чтобы положить функцию в глобальный объект window, достаточно присвоить функцию как свойство этого объекта. Вот пример:
function sayHello() { console.log('Hello, world!'); } // Положить функцию в window window.sayHello = sayHello; // Теперь функция доступна глобально window.sayHello(); // Выведет: Hello, world!
Если вы создаёте функцию через функциональное выражение или стрелочную функцию, можно сразу добавить её в window:
window.greet = function(name) { console.log(`Hello, ${name}!`); }; window.greet('Alice'); // Выведет: Hello, Alice!
В ES6+, если вы работаете в модульной системе (import/export), глобальный объект window не обновляется напрямую, так как модульный код имеет собственные области видимости. В этом случае требуется явное присвоение:
// Определяем функцию const logMessage = (message) => console.log(`Message: ${message}`); // Делаем функцию глобальной window.logMessage = logMessage; // Вызываем logMessage('Module-bound function exported to window!');
Теперь функция будет доступна в глобальной области видимости через window.logMessage.
window) следует с осторожностью, чтобы избежать конфликтов или загрязнения глобального объекта.Все функции состояния должны возвращать Promise. При разрешении через await возвращают следующие типы данных:
| Функция | Возвращаемый тип | Формат |
|---|---|---|
| await window.digiLayer.cartState() | Object | {id: количество, id: количество, ...} |
| await window.digiLayer.favoritesState() | Array | [id, id, ...] |
| await window.digiLayer.compareState() | Array | [id, id, ...] |
window.digiLayer.addToCart(offer_id, amount) — происходит добавление товара в корзину. На стороне сайта, внутри метода addToCart, необходимо обновить состояние корзины cartState, после чего вернуть promise со значением result = true.
Например: в корзине лежит товар в количестве двух штук. Пользователь решил добавить ещё три. В корзине после выполнения функции должно остаться пять единиц товара (2+3), а не перезаписаться на три.
Для функции добавления в избранное переменная
amount не нужна — достаточно только offer_id.
window.digiLayer.addToCart(offer_id, amount)window.digiLayer.cartState()window.digiLayer.removeFromCart(offer_id, amount) — происходит удаление товара из корзины. На стороне сайта, внутри метода removeFromCart, необходимо обновить состояние корзины cartState, после чего вернуть promise со значением result = true.
Например: в корзине лежит товар в количестве трёх штук. Пользователь решил удалить два. В корзине после выполнения функции должна остаться одна единица товара (3−2), а не перезаписаться на два или полностью удалиться товар.
removeFromCart передаётся значение меньше единицы (0, -1 и т.д.) — товар полностью удаляется из корзины.Для функции удаления из избранного переменная
amount не нужна — достаточно только offer_id.
window.digiLayer.removeFromCart(offer_id, amount)window.digiLayer.cartState()При добавлении или удалении товара необходимо убедиться в следующем:
State возвращается объект с актуальным количеством товаров в следующем формате:
{id: количество, id: количество, ...}
[id, id, ...]