JavaScript API

Документ описывает 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.id

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

Если контекст 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",
});

💡Если на странице несколько виджетов, используйте модуль 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>


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


Модуль 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");
});

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


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

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

set(key, value)

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

Параметр

Описание

key

Название параметра

value

Значение параметра

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

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

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

👆 На этом пока всё