Перейти к основному содержимому

Модули и методы

В документе описывается JavaScript API для управления формой отзывa на вашем сайте, отображением виджетов, а также отслеживание различных событий.

Модули предоставляют доступ к низкоуровневому API скрипта. Используйте этот API, если ваш сайт использует подгрузку контента с помощью AJAX.

Доступ к модулю осуществляется через вызов:

Shoppilot.require("module_name");

Доступны следующие модули:

МодульОписание
omniboxОмнибокс — всплывающий виджет с разными формами (отзыв, вопрос, ответ)
(type)_widgetСтатические виджеты, встраиваемые в страницу
multi_widgetСпециальный виджет, позволяющий загружать много виджетов одним запросом
eventsОтслеживание событий
user_configПользовательские настройки

Омнибокс

Модуль omnibox предоставляет методы для управления поведением Омнибокса.

send(command)

Отправляет соответствующую команду Омнибоксу.

Параметры:

ПараметрОписаниеВозможные значения
commandКомандаshowQuestionForm, showReviewForm

Пример вызова:

var omnibox = Shoppilot.require("omnibox");
// отобразить форму отзыва
omnibox.send("showReviewForm");

setContext(options)

Меняет контекст Омнибокса. Следует использовать при AJAX-навигации на сайте.

ПараметрОписаниеВозможные значения
options.typeКонтекстproduct, category, store, brand
options.idID объекта

Пример вызова:

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.onDoneSuccess-callback
options.onFailFail-callback
options.product_idЕсли контекст product
options.category_idЕсли контекст category
options.brand_nameЕсли контекст brand
options.containerCSS селектор или DOM элемент

Параметр options.container указывается только при использовании мульти-виджета (см. ниже).

Пример вызова:

var ProductWidget = Shoppilot.require("product_widget");
var product_reviews = new ProductWidget({
name: "product-reviews",
product_id: "123",
});

::: tip Если на странице несколько виджетов, используйте модуль multi_widget, чтобы получить все виджеты одним запросом. Это значительно ускорит загрузку виджетов. :::

appendTo(container)

Вставляет видежет в DOM дерево. Возвращает Promise.

ПараметрОписание
containerCSS селектор или 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Массив объектов типа Widget (см. выше)

Пример вызова:

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Имя отслеживаемого события
callbackФункция обратного вызова

Возможные значения параметра event_name:

Название событияОписание
widget.impressionПросмотр виджета
widget.renderОтрисовка виджета на странице
widget.review.voteКлик по like/dislike в отзыве
omnibox.closeЗакрытие Омнибокса
omnibox.review_form.openОткрытие формы отзыва
omnibox.review_form.submitСабмит формы отзыва
omnibox.review_form.rejectОшибка при создании отзыва
omnibox.review_form.acceptУспешное создание отзыва
omnibox.question_form.openОткрытие формы вопроса
omnibox.question_form.submitСабмит формы вопроса
omnibox.question_form.rejectОшибка при создании вопроса
omnibox.question_form.acceptУспешное создание вопроса

Параметры функции обратного вызова callback(event)

ПараметрОписание
eventОбъект-событие
event.nameИмя события
event.dataДанные, ассоциированные с данным событием

Пример перехвата события «просмотр отзывов»:

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");
});

Пользовательские настройки

::: danger Это приватное API, оно может меняться. Используйте на свой страх и риск. :::

Модуль user_config позволяет добавить или изменить некоторые настройки по умолчанию.

set(key, value)

Устанавливает или изменяет параметр по умолчанию

ПараметрОписание
keyНазвание параметра
valueЗначение параметра

Например, чтобы добавить пользовательские атрибуты к отзыву, нужно выполнить следующий код:

var config = Shoppilot.require("user_config");
config.set("review_custom_attributes", { shop: { string: "Магазин Химки" } });

На странице отзывов во вкладке «Пользовательские атрибуты» вы увидите атрибут shop: Магазин Химки.