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

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

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

Shoppilot.require('module_name');

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

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

Омнибокс

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

Виджет

Для каждого контекста есть свой модуль: 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 Widget = Shoppilot.require(widget_type);
var w = new Widget(options);

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

appendTo(container)

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

Параметр Описание
container CSS селектор или DOM элемент

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

var Widget = Shoppilot.require('product_widget');
var w = new Widget({name: 'product_reviews', product_id: '123'});
w.append_to("#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: 'product_widget',
  container: '.inline-rating'
});
var product_reviews = new ProductWidget({
  name: 'product-reviews',
  product_id: 'product_widget',
  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 Просмотр виджета
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');
});

results matching ""

    No results matching ""