Модули предоставляют доступ к низкоуровневому API скрипта. Используйте этот API, если ваш сайт использует подгрузку контента с помощью AJAX.
Доступ к модулю осуществляется через вызов:
Shoppilot.require("module_name");
Доступны следующие модули:
Модуль |
Описание |
|
Омнибокс — всплывающий виджет с разными формами (отзыв, вопрос, ответ) |
|
Статические виджеты, встраиваемые в страницу |
|
Специальный виджет, позволяющий загружать много виджетов одним запросом |
|
Отслеживание событий |
|
Пользовательские настройки |
Модуль omnibox
предоставляет методы для управления поведением Омнибокса.
Отправляет соответствующую команду Омнибоксу. Параметры:
Параметр |
Описание |
Возможные значения |
|
Команда |
|
Пример вызова:
var omnibox = Shoppilot.require("omnibox");
// отобразить форму отзыва
omnibox.send("showReviewForm");
Меняет контекст Омнибокса. Следует использовать при AJAX-навигации на сайте.
Параметр |
Описание |
Возможные значения |
|
Контекст |
|
|
ID объекта |
Пример вызова:
var omnibox = Shoppilot.require("omnibox");
// Новый контекст — товар с id=123
omnibox.setContext({ type: "product", id: "123" });
Возвращает Promise. Пример вызова:
var LOGGED_IN_TO_WEBSITE; // TODO
var Omnibox = Shoppilot.require("omnibox");
Omnibox.isLoggedIn().then(function (logged_in_to_shoppilot) {
if (LOGGED_IN_TO_WEBSITE && !logged_in_to_shoppilot) {
// To do some SMART things
}
});
Для каждого контекста есть свой модуль: product_widget
, category_widget
, brand_widget
, store_widget
. Методы модулей идентичны.
Конструктор виджета.
Параметр |
Описание |
options |
Объект с параметрами |
options.name |
Системное имя виджета |
options.onDone |
Success-callback |
options.onFail |
Fail-callback |
options.product_id |
Если контекст |
options.category_id |
Если контекст |
options.brand_name |
Если контекст |
options.container |
CSS селектор или DOM элемент |
Параметр options.container
указывается только при использовании мульти-виджета (см. ниже).
Пример вызова:
var ProductWidget = Shoppilot.require("product_widget");
var product_reviews = new ProductWidget({
name: "product-reviews",
product_id: "123",
});
💡Если на странице несколько виджетов, используйте модуль |
Вставляет виджет в DOM дерево. Возвращает Promise.
Параметр |
Описание |
|
CSS селектор или DOM элемент |
Пример вызова:
var ProductWidget = Shoppilot.require("product_widget");
var w = new ProductWidget({ name: "product_reviews", product_id: "123" });
w.appendTo("#product-reviews"); // <div id="product-reviews"></div>
Модуль multi_widget
позволяет получить несколько виджетов одним запросом. Это очень удобно, когда на странице больше одного виджета.
Добавить в DOM дерево несколько виджетов.
Параметр |
Описание |
widgets |
Массив объектов типа |
Пример вызова:
var ProductWidget = Shoppilot.require("product_widget");
var inline_rating = new ProductWidget({
name: "inline-rating",
product_id: "123",
container: ".inline-rating",
});
var product_reviews = new ProductWidget({
name: "product-reviews",
product_id: "123",
container: ".product-reviews",
});
var MultiWidget = Shoppilot.require("multi_widget");
MultiWidget.render([inline_rating, product_reviews]);
Модуль events
позволяет отслеживать события виджетов и омнибокса.
Параметр |
Описание |
|
Имя отслеживаемого события |
|
Функция обратного вызова |
Возможные значения параметра event_name
:
Название события |
Описание |
|
Просмотр виджета |
|
Отрисовка виджета на странице |
|
Клик по like/dislike в отзыве |
|
Закрытие Омнибокса |
|
Открытие формы отзыва |
|
Сабмит формы отзыва |
|
Ошибка при создании отзыва |
|
Успешное создание отзыва |
|
Открытие формы вопроса |
|
Сабмит формы вопроса |
|
Ошибка при создании вопроса |
|
Успешное создание вопроса |
Параметры функции обратного вызова callback(event)
Параметр |
Описание |
|
Объект-событие |
|
Имя события |
|
Данные, ассоциированные с данным событием |
Пример перехвата события «просмотр отзывов»:
var events = Shoppilot.require("events");
events.on("widget.impression", function (event) {
var widget = event.data.widget;
// отправляем событие в Google Analytics
ga("send", "event", "widget-" + widget.name, "impression");
});
Пример перехвата события «открытие формы отзыва»:
var events = Shoppilot.require("events");
events.on("omnibox.review_form.open", function (event) {
// отправляем событие в Google Analytics
ga("send", "event", "review form", "open");
});
❗️Это приватное API, оно может меняться. Используйте на свой страх и риск. Модуль |
Устанавливает или изменяет параметр по умолчанию
Параметр |
Описание |
|
Название параметра |
|
Значение параметра |
Например, чтобы добавить пользовательские атрибуты к отзыву, нужно выполнить следующий код:
var config = Shoppilot.require("user_config");
config.set("review_custom_attributes", { shop: { string: "Магазин Химки" } });
На странице отзывов во вкладке «Пользовательские атрибуты» вы увидите атрибут shop: Магазин Химки
.