Модули и методы
Модули предоставляют доступ к низкоуровневому API скрипта. Используйте этот API, если ваш сайт использует подгрузку контента с помощью AJAX.
Доступ к модулю осуществляется через вызов:
Shoppilot.require("module_name");
Доступны следующие модули:
Модуль | Описание |
| Омнибокс — всплывающий виджет с разными формами (отзыв, вопрос, ответ) |
| Статические виджеты, встраиваемые в страницу |
| Специальный виджет, позволяющий загружать много виджетов одним запросом |
| Отслеживание событий |
| Пользовательские настройки |
Омнибокс
Модуль omnibox
предоставляет методы для управления поведением Омнибокса.
send(command)
Отправляет соответствующую команду Омнибоксу. Параметры:
Параметр | Описание | Возможные значения |
| Команда |
|
Пример вызова:
var omnibox = Shoppilot.require("omnibox");
// отобразить форму отзыва
omnibox.send("showReviewForm");
setContext(options)
Меняет контекст Омнибокса. Следует использовать при AJAX-навигации на сайте.
Параметр | Описание | Возможные значения |
| Контекст |
|
| ID объекта |
Пример вызова:
var omnibox = Shoppilot.require("omnibox");
// Новый контекст — товар с id=123
omnibox.setContext({ type: "product", id: "123" });
isLoggedIn()
Возвращает 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
. Методы модулей идентичны.
new Widget(options)
Конструктор виджета.
Параметр | Описание |
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",
});
💡Если на странице несколько виджетов, используйте модуль |
appendTo(container)
Вставляет виджет в 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
позволяет получить несколько виджетов одним запросом. Это очень удобно, когда на странице больше одного виджета.
render(widgets)
Добавить в 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
позволяет отслеживать события виджетов и омнибокса.
on(event_name, callback)
Параметр | Описание |
| Имя отслеживаемого события |
| Функция обратного вызова |
Возможные значения параметра 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, оно может меняться. Используйте на свой страх и риск. Модуль |
set(key, value)
Устанавливает или изменяет параметр по умолчанию
Параметр | Описание |
| Название параметра |
| Значение параметра |
Например, чтобы добавить пользовательские атрибуты к отзыву, нужно выполнить следующий код:
var config = Shoppilot.require("user_config");
config.set("review_custom_attributes", { shop: { string: "Магазин Химки" } });
На странице отзывов во вкладке «Пользовательские атрибуты» вы увидите атрибут shop: Магазин Химки
.