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

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

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

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

Shoppilot.require("module_name");
1

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

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

# Омнибокс

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

# send(command)

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

Параметры:

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

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

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

# setContext(options)

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

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

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

var omnibox = Shoppilot.require("omnibox");
//  Новый контекст — товар с id=123
omnibox.setContext({ type: "product", id: "123" });
1
2
3

# 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
  }
});
1
2
3
4
5
6
7

# Виджет

Для каждого контекста есть свой модуль: 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 Если контекст product
options.category_id Если контекст category
options.brand_name Если контекст brand
options.container CSS селектор или DOM элемент

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

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

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

TIP

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

# appendTo(container)

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

Параметр Описание
container 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>
1
2
3

# Мульти-виджет

Модуль 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]);
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# Отслеживание событий

Модуль 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");
});
1
2
3
4
5
6

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

var events = Shoppilot.require("events");
events.on("omnibox.review_form.open", function (event) {
  // отправляем событие в Google Analytics
  ga("send", "event", "review form", "open");
});
1
2
3
4
5

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

WARNING

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

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

# set(key, value)

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

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

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

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

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

Last Updated: 3 days ago