Исходный код вики Для разработчиков
Версия 6.1 от Михаил Галич на 11.12.2023, 13:56
Последние авторы
author | version | line-number | content |
---|---|---|---|
1 | == Для разработчиков == | ||
2 | |||
3 | Назначение данного раздела — описать способы взаимодействия с виджетом Веб-платформы по задуманому вами сценарию. Типичный процесс подключения, открытия и отслеживания виджета выглядит так: | ||
4 | |||
5 | ~1. Подключите скрипт external.script.js к вашему сайту. Его адрес будет доступен **после добавления сайта** в процессе настройки в **администраторской панели Веб-Платформы**, так же как и параметр id для подключения | ||
6 | |||
7 | 2. Вставьте в необходимом месте на своём сайте код: | ||
8 | |||
9 | {{{<script type="text/javascript"> | ||
10 | // инициализируем виджет с параметрами | ||
11 | WPInit({ | ||
12 | id: 1, | ||
13 | width: 400, | ||
14 | type: 'modal' | ||
15 | }) | ||
16 | |||
17 | // сразу откроем его для пользователя | ||
18 | WPOpenModal(); // вариант для модального окна | ||
19 | // WPOpen(); // вариант для открытия в теле страницы. Используется при инициализации виджета с type: 'instant' | ||
20 | |||
21 | // будем следить за состоянием виджета | ||
22 | WPChange = function(response) { | ||
23 | if (response.status == 'reserved') { | ||
24 | // если заказ зарезирвирован, занесём данные из response.data.order_id себе на сайт | ||
25 | } | ||
26 | if (response.status == 'completed') { | ||
27 | // если заказ оплачен, занесём данные из response.data.order_id себе на сайт | ||
28 | } | ||
29 | } | ||
30 | </script>}}} | ||
31 | |||
32 | |||
33 | == Функции == | ||
34 | |||
35 | === WPInit({params}) === | ||
36 | |||
37 | Функция загрузки виджета с параметризацией, при создании необходимо передать id виджета, который можно найти в Административной панели | ||
38 | |||
39 | ===== Минимальный способ инициализации: ===== | ||
40 | |||
41 | * WPInit({ id: 1 }) | ||
42 | |||
43 | ===== Пример передаваемых данных: ===== | ||
44 | |||
45 | Виджет можно инициализировать с различными параметрами, все из них опциональные, кроме id. | ||
46 | |||
47 | {{{WPInit({ | ||
48 | id: 1, | ||
49 | width: 400, | ||
50 | height: 600, | ||
51 | type: 'modal' | ||
52 | })}}} | ||
53 | |||
54 | === WPOpen({params}) === | ||
55 | |||
56 | Функция открытия виджета в каком-либо блоке, используется при инициализации виджета с type: 'instant' | ||
57 | |||
58 | ===== Пример передаваемых данных: ===== | ||
59 | |||
60 | {{{// показ виджета с группой id 5 | ||
61 | WPOpen({ | ||
62 | groupid: [5] | ||
63 | })}}} | ||
64 | |||
65 | === WPOpenModal({params}) === | ||
66 | |||
67 | Функция открытия виджета в модальном окне, используется при инициализации виджета с type: 'modal' | ||
68 | |||
69 | ===== Пример передаваемых данных: ===== | ||
70 | |||
71 | {{{// показ виджета на нажатие кнопки с id "OpenButton" var OpenButton = document.getElementById('OpenButton'); OpenButton.onclick = function() { WPOpenModal({ tariffsid: [27, 28] }) }}}} | ||
72 | |||
73 | === WPChange({status, data}) === | ||
74 | |||
75 | Функция, которая вызывается каждый раз при изменении состояния виджета. Каждый раз передаёт в переменной response состояние в status и опционально данные в data. При переопределении этой функции у себя на странице, администратор может следить за состоянием виджета и статусом заказа из javascript | ||
76 | |||
77 | ===== Примеры передаваемых данных: ===== | ||
78 | |||
79 | * { status:'starting' } — виджет в процессе запуска, в этот момент определяется, что он должен в данный момент отображать | ||
80 | * { status:'started' } — виджет на начальном экране, где показывается список услуг для покупки | ||
81 | * { status:'reserved', data: { order_id: 2 } } — виджет находится на стадии забронированного заказ, в data передаётся id | ||
82 | * { status:'completed', data: { order_id: 2 } } — виджет находится на стадии оплаченного заказ, в data передаётся id заказа | ||
83 | |||
84 | ===== Пример работы с данными: ===== | ||
85 | |||
86 | {{{WPChange = function(response) { if (response.status == 'starting') { // действие на внешней странице } if (response.status == 'started') { // действие на внешней странице } if (response.status == 'reserved') { // id зарезервированного заказа: response.data.order_id } if (response.status == 'completed') { // id оплаченного заказа: response.data.order_id } }}}} | ||
87 | |||
88 | == Параметры == | ||
89 | |||
90 | ==== Обязательные параметры WPInit ==== | ||
91 | |||
92 | ==== id: 1 ==== | ||
93 | |||
94 | id виджета, который можно узнать в Административной панели | ||
95 | |||
96 | ==== Возможные параметры WPInit ==== | ||
97 | |||
98 | ==== height: 480 ==== | ||
99 | |||
100 | Высота виджета в пикселях, по умолчанию: | ||
101 | |||
102 | * 480px, если виджет запущен как type: 'modal' | ||
103 | * 100%, если виджет запущен как type: 'instant' | ||
104 | |||
105 | ==== width: 640 ==== | ||
106 | |||
107 | Ширина виджета в пикселях, по умолчанию: | ||
108 | |||
109 | * 640px, если виджет запущен как type: 'modal' | ||
110 | * 100%, если виджет запущен как type: 'instant' | ||
111 | |||
112 | ==== type: 'modal' ==== | ||
113 | |||
114 | Способ открытия виджета, по умолчанию 'instant': | ||
115 | |||
116 | * 'instant' Открытие виджета на месте, где был вызов виджета (на месте тэга script), либо в блоке place, если он указан в параметрах виджета при инициализации | ||
117 | * 'modal' Открытие виджета в модальном окне | ||
118 | |||
119 | ==== place: '#place' ==== | ||
120 | |||
121 | Идентификатор элемента DOM, в который необходимо поместить виджет, например: #widget. Используется совместно с type: 'instant' | ||
122 | |||
123 | (% class="box warningmessage" %) | ||
124 | ((( | ||
125 | **Важно:** элемент DOM для place должен быть либо на странице до вставки инициализации виджета (WPInit), либо инициализация виджета должна быть исполнена после загрузки DOM (например, обёрнута в событие $(document).ready(function(){}) в jQuery) | ||
126 | ))) | ||
127 | |||
128 | ==== ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-- ==== | ||
129 | |||
130 | ==== Возможные параметры WPOpen и WPOpenModal ==== | ||
131 | |||
132 | ===== Календарь и даты ===== | ||
133 | |||
134 | ==== nocalendar: false ==== | ||
135 | |||
136 | Убирает календарь внутри виджета (и в //покупке// и в //пополнении//), в случаях, когда дата, на которую покупается/пополняется билет, не важна. По умолчанию false | ||
137 | |||
138 | ==== mindate: '01.01.2019' ==== | ||
139 | |||
140 | Параметр минимальной отображаемой даты в календаре (и в //покупке// и в //пополнении//). mindate: '20.05.2018' покажет 20.05.2018 как самую первую дату, доступную к выбору в календаре, если она находится после текущего дня | ||
141 | |||
142 | ==== maxdate: '01.01.2020' ==== | ||
143 | |||
144 | Параметр максимальной отображаемой даты в календаре (и в //покупке// и в //пополнении//). maxdate: '20.05.2018' покажет 20.05.2018 как самую последнюю дату, доступную к выбору в календаре. | ||
145 | |||
146 | ==== forcedate: '12.06.2019' ==== | ||
147 | |||
148 | Параметр для открывания виджета с указанной сразу датой (и в //покупке// и в //пополнении//). forcedate: '20.05.2018' покажет услуги к продаже на дату 20.05.2018. | ||
149 | |||
150 | ==== disableddates: ['23.02.2019' ==== | ||
151 | |||
152 | ==== , … ] ==== | ||
153 | |||
154 | Параметр отключения дат в календаре (и в //покупке// и в //пополнении//). Делает невозможным выбор определённых дней в массиве дат. | ||
155 | Пример использования: disableddates: ['23.02.2018', '08.03.2018'] уберёт даты 23.02.2018 и 08.03.2018 из возможных для выбора дат в календаре. | ||
156 | |||
157 | ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-- | ||
158 | |||
159 | ===== Услуги, пакеты услуг, группы услуг ===== | ||
160 | |||
161 | ==== tariffsid: [29 ==== | ||
162 | |||
163 | ==== , 30 ==== | ||
164 | |||
165 | ==== , … ] ==== | ||
166 | |||
167 | Тарифы, которые следует показать на вкладке «Покупка услуг». По умолчанию массив пуст и не показывает отдельно никакие из услуг. Используется для принудительной фильтрации в том случае, когда определённому пользователю необходимо показывать услуги, доступные только для него. | ||
168 | Пример использования: | ||
169 | tariffsid: [29, 30] покажет тарифы с id 29 и 30 во вкладке «Покупка услуг». | ||
170 | tariffsid: false уберёт все тарифы с первой страницы | ||
171 | |||
172 | ==== rtariffsid: [56 ==== | ||
173 | |||
174 | ==== , 57 ==== | ||
175 | |||
176 | ==== , … ] ==== | ||
177 | |||
178 | Тарифы, которые следует показать после ввода карты во вкладке «Пополнение услуг». По умолчанию массив пуст и не показывает отдельно никакие из услуг. Используется для принудительной фильтрации в том случае, когда определённому пользователю необходимо показывать услуги, доступные только для него. | ||
179 | Пример использования: | ||
180 | rtariffsid: [56, 57] покажет тарифы с id 56 и 57 после ввода карты во вкладке «Пополнение услуг» | ||
181 | tariffsid: false уберёт все тарифы с первой страницы | ||
182 | |||
183 | ==== bundlesid: [4 ==== | ||
184 | |||
185 | ==== , 5 ==== | ||
186 | |||
187 | ==== , … ] ==== | ||
188 | |||
189 | Пакеты услуг, которые следует показать на первой странице. По умолчанию массив пуст и не показывает отдельно никакие из пакетов услуг. Используется для принудительной фильтрации в том случае, когда определённому пользователю необходимо показывать пакеты услуг, доступные только для него. | ||
190 | Пример использования: | ||
191 | bundlesid: [4, 5] покажет пакеты услуг с id 4 и 5 в момент открытия виджета. | ||
192 | bundlesid: false уберёт все пакеты услуг с первой страницы | ||
193 | |||
194 | ==== groupid: 12 ==== | ||
195 | |||
196 | Параметр, который форсирует показ определённой группы услуг ппс. groupid: 5 покажет только одну группу с id 5 в виджете. | ||
197 | |||
198 | ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-- | ||
199 | |||
200 | ===== Предзаказ ===== | ||
201 | |||
202 | ==== preorder: [{id: 57 ==== | ||
203 | |||
204 | ==== , date: '06.06.2019' ==== | ||
205 | |||
206 | ==== , count: 1 ==== | ||
207 | |||
208 | ==== }, … ] ==== | ||
209 | |||
210 | Параметр, позволяющий купить сразу несколько услуг и перейти к подтверждению покупки. | ||
211 | |||
212 | * id — id услуги к покупке | ||
213 | * date — дата, на которую покупается услуга | ||
214 | * count — количество покупаемых услуг | ||
215 | |||
216 | |||
217 | ===== Пример передаваемых данных: ===== | ||
218 | |||
219 | |||
220 | |||
221 | |||
222 |