Исходный код вики Для разработчиков

Версия 35.1 от Михаил Галич на 14.12.2023, 15:26

Последние авторы
1 {{toc depth="4"/}}
2
3 = Инструкция для подключения =
4
5 Назначение данного раздела — описать способы взаимодействия с виджетом Веб-платформы по задуманному вами сценарию. Типичный процесс подключения, открытия и отслеживания виджета выглядит так:
6
7 ~1. Подключите скрипт ##external.script.js## к вашему сайту. Его адрес будет доступен **после добавления сайта** в процессе настройки в **администраторской панели Веб-Платформы**, так же как и параметр ##id## для подключения
8
9 2. Вставьте в необходимом месте на своём сайте код:
10
11 {{code language="html"}}
12 <script type="text/javascript">
13 // инициализируем виджет с параметрами
14 WPInit({
15 id: 1,
16 width: 400,
17 type: 'modal'
18 })
19
20 // сразу откроем его для пользователя
21 WPOpenModal(); // вариант для модального окна
22 // WPOpen(); // вариант для открытия в теле страницы. Используется при инициализации виджета с type: 'instant'
23
24 // будем следить за состоянием виджета
25 WPChange = function(response) {
26 if (response.status == 'reserved') {
27 // если заказ зарезирвирован, занесём данные из response.data.order_id себе на сайт
28 }
29 if (response.status == 'completed') {
30 // если заказ оплачен, занесём данные из response.data.order_id себе на сайт
31 }
32 }
33 </script>
34 {{/code}}
35
36 = Функции =
37
38 == WPInit({params}) ==
39
40 (% class="box infomessage" %)
41 (((
42 Функция загрузки виджета с параметризацией, при создании необходимо передать**## id ##**виджета, который можно найти в Административной панели
43 )))
44
45 ===== Минимальный способ инициализации: =====
46
47 {{code language="javascript"}}
48 WPInit({ id: 1 })
49 {{/code}}
50
51 ===== Пример передаваемых данных: =====
52
53 (% class="box infomessage" %)
54 (((
55 Виджет можно инициализировать с различными параметрами, все из них опциональные, кроме **##id##**.
56 )))
57
58 {{code language="javascript"}}
59 WPInit({
60 id: 1,
61 width: 400,
62 height: 600,
63 type: 'modal'
64 })
65 {{/code}}
66
67 == WPOpen({params}) ==
68
69 (% class="box infomessage" %)
70 (((
71 Функция открытия виджета в каком-либо блоке, используется при инициализации виджета с## **type: 'instant'**##
72 )))
73
74 ===== Пример передаваемых данных: =====
75
76 {{code language="javascript"}}
77 // показ виджета с группой id 5
78 WPOpen({
79 groupid: [5]
80 })
81 {{/code}}
82
83 == WPOpenModal({params}) ==
84
85 (% class="box infomessage" %)
86 (((
87 Функция открытия виджета в модальном окне, используется при инициализации виджета с## **type: 'modal'**##
88 )))
89
90 ===== Пример передаваемых данных: =====
91
92 {{code language="javascript"}}
93 // показ виджета на нажатие кнопки с id "OpenButton"
94 var OpenButton = document.getElementById('OpenButton');
95 OpenButton.onclick = function () {
96 WPOpenModal({ tariffsid: [27, 28] });
97 };
98 {{/code}}
99
100 == WPChange({status, data}) ==
101
102 (% class="box infomessage" %)
103 (((
104 Функция, которая вызывается каждый раз при изменении состояния виджета. Каждый раз передаёт в переменной response состояние в status и опционально данные в data. При переопределении этой функции у себя на странице, администратор может следить за состоянием виджета и статусом заказа из javascript
105 )))
106
107 ===== Примеры передаваемых данных: =====
108
109 * ##{ status:'starting' }## — виджет в процессе запуска, в этот момент определяется, что он должен в данный момент отображать
110 * ##{ status:'started' }## — виджет на начальном экране, где показывается список услуг для покупки
111 * ##{ status:'reserved', data: { order_id: 2 } }## — виджет находится на стадии забронированного заказ, в data передаётся id
112 * ##{ status:'completed', data: { order_id: 2 } }## — виджет находится на стадии оплаченного заказ, в data передаётся id заказа
113
114 ===== Пример работы с данными: =====
115
116 {{code language="javascript"}}
117 WPChange = function(response) {
118 if (response.status == 'starting') {
119 // действие на внешней странице
120 }
121 if (response.status == 'started') {
122 // действие на внешней странице
123 }
124 if (response.status == 'reserved') {
125 // id зарезервированного заказа: response.data.order_id
126 }
127 if (response.status == 'completed') {
128 // id оплаченного заказа: response.data.order_id
129 }
130 }
131 {{/code}}
132
133 = Параметры =
134
135 == Обязательные параметры WPInit ==
136
137 ==== id ====
138
139 Тип данных:## //number//##
140
141 (% class="box infomessage" %)
142 (((
143 id виджета, который можно узнать в Административной панели.
144 )))
145
146 == Возможные параметры WPInit ==
147
148 ==== height ====
149
150 Тип данных:## //number //##//|## boolean##//
151
152 По умолчанию:##// false//##
153
154 (% class="box infomessage" %)
155 (((
156 Высота виджета в пикселях, по умолчанию:
157 • 480px, если виджет запущен как type: 'modal'
158 • 100%, если виджет запущен как type: 'instant'
159 )))
160
161 ==== width ====
162
163 Тип данных:## //number //##//|## boolean##//
164
165 По умолчанию:##// false//##
166
167 (% class="box infomessage" %)
168 (((
169 Ширина виджета в пикселях, по умолчанию:
170 • 640px, если виджет запущен как type: 'modal'
171 • 100%, если виджет запущен как type: 'instant'
172 )))
173
174 ==== type ====
175
176 Тип данных:## //string//##
177
178 По умолчанию:##// 'instant'//##
179
180 (% class="box infomessage" %)
181 (((
182 Способ открытия виджета
183 • 'instant' Открытие виджета на месте, где был вызов виджета (на месте тэга script), либо в блоке place, если он указан в параметрах виджета при инициализации
184 • 'modal' Открытие виджета в модальном окне
185 )))
186
187 ==== place ====
188
189 Тип данных:## //string //##//|## boolean##//
190
191 По умолчанию:##// false//##
192
193 (% class="box infomessage" %)
194 (((
195 Идентификатор элемента DOM, в который необходимо поместить виджет, например: **###widget##**. Используется совместно с **##type: 'instant'##**
196 )))
197
198 (% class="box warningmessage" %)
199 (((
200 **Важно:** элемент DOM для place должен быть либо на странице до вставки инициализации виджета (WPInit), либо инициализация виджета должна быть исполнена после загрузки DOM (например, обёрнута в событие $(document).ready(function(){}) в jQuery)
201 )))
202
203 ----
204
205 == Возможные параметры WPOpen и WPOpenModal ==
206
207 === Календарь и даты ===
208
209 ==== disableddates ====
210
211 Тип данных:##// Array<string>//##
212
213 По умолчанию:##// []//##
214
215 (% class="box infomessage" %)
216 (((
217 Параметр отключения дат в календаре (и в //покупке// и в //пополнении//). Делает невозможным выбор определённых дней в массиве дат.
218 )))
219
220 Пример:
221
222 {{code language="javascript"}}
223 disableddates: ['23.02.2018', '08.03.2018'] // уберёт даты 23.02.2018 и 08.03.2018 из возможных для выбора дат в календаре.
224 {{/code}}
225
226 ==== forcedate ====
227
228 Тип данных:##// string//##
229
230 По умолчанию:##// undefined//##
231
232 (% class="box infomessage" %)
233 (((
234 Параметр для открывания виджета с указанной сразу датой (и в //покупке// и в //пополнении//).
235 **##forcedate: '20.05.2018'##** покажет услуги к продаже на дату 20.05.2018.
236 )))
237
238 ==== maxdate ====
239
240 Тип данных:##// string//##
241
242 По умолчанию:##// undefined//##
243
244 (% class="box infomessage" %)
245 (((
246 Параметр максимальной отображаемой даты в календаре (и в //покупке// и в //пополнении//).
247 **##maxdate: '20.05.2018'##** покажет 20.05.2018 как самую последнюю дату, доступную к выбору в календаре.
248 )))
249
250 ==== mindate ====
251
252 Тип данных:##// string//##
253
254 По умолчанию:##// undefined//##
255
256 (% class="box infomessage" %)
257 (((
258 Параметр минимальной отображаемой даты в календаре (и в //покупке// и в //пополнении//). mindate: '20.05.2018' покажет 20.05.2018 как самую первую дату, доступную к выбору в календаре, если она находится после текущего дня.
259 )))
260
261 ==== nocalendar ====
262
263 Тип данных:## //boolean//##
264
265 По умолчанию:##// false//##
266
267 (% class="box infomessage" %)
268 (((
269 Убирает календарь внутри виджета (и в //покупке// и в //пополнении//), в случаях, когда дата, на которую покупается/пополняется билет, не важна.
270 )))
271
272 ----
273
274 === Услуги, пакеты услуг, группы услуг ===
275
276 ==== tariffsid ====
277
278 Тип данных:##// Array<number> //##//|## boolean##//
279
280 По умолчанию:##// []//##
281
282 (% class="box infomessage" %)
283 (((
284 Тарифы, которые следует показать на вкладке «Покупка услуг». По умолчанию массив пуст и не показывает отдельно никакие из услуг. Используется для принудительной фильтрации в том случае, когда определённому пользователю необходимо показывать услуги, доступные только для него.
285 )))
286
287 Пример:
288
289 {{code language="javascript"}}
290 tariffsid: [29, 30] // покажет тарифы с id 29 и 30 во вкладке «Покупка услуг».
291 tariffsid: false // уберёт все тарифы с первой страницы
292 {{/code}}
293
294 ==== rtariffsid ====
295
296 Тип данных:##// Array<number> //##//|## boolean##//
297
298 По умолчанию:##// []//##
299
300 (% class="box infomessage" %)
301 (((
302 Тарифы, которые следует показать после ввода карты во вкладке «Пополнение услуг». По умолчанию массив пуст и не показывает отдельно никакие из услуг. Используется для принудительной фильтрации в том случае, когда определённому пользователю необходимо показывать услуги, доступные только для него.
303 )))
304
305 Пример:
306
307 {{code language="javascript"}}
308 rtariffsid: [56, 57] // покажет тарифы с id 56 и 57 после ввода карты во вкладке «Пополнение услуг»
309 rtariffsid: false // уберёт все тарифы во вкладке «Пополнение услуг»
310 {{/code}}
311
312 ==== bundlesid ====
313
314 Тип данных:##// Array<number> //##//|## boolean##//
315
316 По умолчанию:##// []//##
317
318 (% class="box infomessage" %)
319 (((
320 Пакеты услуг, которые следует показать на первой странице. По умолчанию массив пуст и не показывает отдельно никакие из пакетов услуг. Используется для принудительной фильтрации в том случае, когда определённому пользователю необходимо показывать пакеты услуг, доступные только для него.
321 )))
322
323 Пример:
324
325 {{code language="javascript"}}
326 bundlesid: [4, 5] // покажет пакеты услуг с id 4 и 5 в момент открытия виджета.
327 bundlesid: false // уберёт все пакеты услуг с первой страницы
328 {{/code}}
329
330 ==== bundleslessonstariffsid ====
331
332 Тип данных:##// Array<number>//##
333
334 По умолчанию:##// []//##
335
336 (% class="box warningmessage" %)
337 (((
338 Описание отсутствует
339 )))
340
341 ==== groupid ====
342
343 Тип данных:##// number//##
344
345 По умолчанию:##// undefined//##
346
347 (% class="box infomessage" %)
348 (((
349 Параметр, который форсирует показ определённой группы услуг ппс. groupid: 5 покажет только одну группу с id 5 в виджете.
350 )))
351
352 ----
353
354 === Предзаказ ===
355
356 ==== preorder ====
357
358 Тип данных:##// Array<object>//##
359
360 По умолчанию:##// undefined//##
361
362 (% class="box infomessage" %)
363 (((
364 Параметр, позволяющий купить сразу несколько услуг и перейти к подтверждению покупки.
365 • id — id услуги к покупке
366 • date — дата, на которую покупается услуга
367 • count — количество покупаемых услуг
368 )))
369
370 ===== Пример передаваемых данных: =====
371
372 {{code language="javascript"}}
373 // либо WPOpenModal({})
374 WPOpen({
375 preorder: [
376 {
377 id: 57,
378 date: '06.06.2019',
379 count: 1
380 }, {
381 id: 58,
382 date: '07.06.2019',
383 count: 2
384 }
385 ]
386 })
387 {{/code}}
388
389 ----
390
391 === Отображение ===
392
393 ==== cartmaxitems ====
394
395 Тип данных:##// number//##
396
397 По умолчанию:##// 6//##
398
399 (% class="box infomessage" %)
400 (((
401 Ограничивает максимальное кол-во товаров в корзине. ##Минимальное значение 1, но не меньше **cartminitems**. Максимальное значение 60.##
402 )))
403
404 ==== cartminitems ====
405
406 Тип данных:##// number//##
407
408 По умолчанию:##// 1//##
409
410 (% class="box infomessage" %)
411 (((
412 Ограничивает минимальное кол-во товаров в корзине. ##Минимальное значение 1. Максимальное значение 60, но не больше **cartmaxitems**.##
413 )))
414
415 ==== categories ====
416
417 Тип данных:##// Array<string>//##
418
419 По умолчанию:##// []//##
420
421 (% class="box warningmessage" %)
422 (((
423 Описание отсутствует
424 )))
425
426 ==== clubsiteid ====
427
428 Тип данных:##// number//##
429
430 По умолчанию:##// 0//##
431
432 (% class="box warningmessage" %)
433 (((
434 Описание отсутствует
435 )))
436
437 ==== coachid ====
438
439 Тип данных:##// number//##
440
441 По умолчанию:##// undefined//##
442
443 (% class="box warningmessage" %)
444 (((
445 Описание отсутствует
446 )))
447
448 ==== disablemultipleseances ====
449
450 Тип данных:##// boolean//##
451
452 По умолчанию:##// false//##
453
454 (% class="box infomessage" %)
455 (((
456 Параметр предотвращает добавление в корзину тарифов с различными сеансами.
457 Таким образом как только в корзине появится хоть один товар с сеансом "10:00 - 11:30", товары, у которых есть сеанс например "13:00 - 14:30" будет невозможно добавить в корзину.
458 Товары без сеансов __не будут затронуты__.
459 )))
460
461 ==== forcemedia ====
462
463 Тип данных:##// string//##
464
465 По умолчанию:##// ''//##
466
467 (% class="box infomessage" %)
468 (((
469 Параметр, который вставяет строчку с носителем в поле носителя во вкладке «Пополнение услуг». Используется, например, для QR-кода нанесённого на носитель, чтобы быстро его пополнить.
470 )))
471
472 Пример:
473
474 {{code language="javascript"}}
475 forcemedia: 'E0012345678900'
476 {{/code}}
477
478 ==== forceseanceid ====
479
480 Тип данных:##// number//##
481
482 По умолчанию без указания идентификатора не учитывается.
483
484 (% class="box infomessage" %)
485 (((
486 Заставит виджет выбрать мероприятие арены по идентификатору платформы и не позволять вернуться к этапу выбора других мероприятий.
487 )))
488
489 ==== forcesectorid ====
490
491 Тип данных:##// number//##
492
493 По умолчанию без указания идентификатора не учитывается.
494
495 (% class="box infomessage" %)
496 (((
497 Заставит виджет выбрать сектор мероприятия по **##id##** и не позволять вернуться к этапу выбора других секторов.
498 )))
499
500 ==== forcetab ====
501
502 Тип данных:##// string//##
503
504 По умолчанию:##// ''//##
505
506 (% class="box infomessage" %)
507 (((
508 Переключение на необходимую вкладку виджета («**покупка услуг**» или «**пополнение услуг**») при загрузке.
509 По умолчанию открывается вкладка «**покупка услуг**».
510 **##forcetab: 'rewrite'##** принудительно откроет «**пополнение услуг**».
511 Обычно используется в комбинации с параметром **##onlytab##**
512 )))
513
514 ==== grouplessonsskillstariffs ====
515
516 Тип данных:##// Array<number> //##//|## object##//
517
518 По умолчанию:##// {}//##
519
520 (% class="box warningmessage" %)
521 (((
522 Описание отсутствует
523 )))
524
525 ==== grouplessonstariffsid ====
526
527 Тип данных:##// Array<number>//##
528
529 По умолчанию:##// []//##
530
531 (% class="box warningmessage" %)
532 (((
533 Описание отсутствует
534 )))
535
536 ==== ismobile ====
537
538 Тип данных:##// boolean//##
539
540 По умолчанию:##// false//##
541
542 (% class="box warningmessage" %)
543 (((
544 Описание отсутствует
545 )))
546
547 ==== lessonslocation ====
548
549 Тип данных:##// number//##
550
551 По умолчанию:##// undefined//##
552
553 (% class="box warningmessage" %)
554 (((
555 Описание отсутствует
556 )))
557
558 ==== lessonstariffsid ====
559
560 Тип данных:##// Array<number>//##
561
562 По умолчанию:##// []//##
563
564 (% class="box warningmessage" %)
565 (((
566 Описание отсутствует
567 )))
568
569 ==== locale ====
570
571 Тип данных:##// string//##
572
573 По умолчанию:##// ''//##
574
575 (% class="box infomessage" %)
576 (((
577 Параметр локализации. Позволяет переключать между языками виджета, например 'ru' - русский язык, 'en' - английский язык.
578 )))
579
580 ==== marketbillid ====
581
582 Тип данных:##// number//##
583
584 По умолчанию:##// undefined//##
585
586 (% class="box warningmessage" %)
587 (((
588 Описание отсутствует
589 )))
590
591 ==== marketemployeeid ====
592
593 Тип данных:##// number//##
594
595 По умолчанию:##// undefined//##
596
597 (% class="box warningmessage" %)
598 (((
599 Описание отсутствует
600 )))
601
602 ==== minimap ====
603
604 Тип данных:##// boolean//##
605
606 По умолчанию:##// true//##
607
608 (% class="box infomessage" %)
609 (((
610 Отображать миникарту.
611 )))
612
613 ==== minimapaspect ====
614
615 Тип данных:##// number//##
616
617 По умолчанию:##// 0.2//##
618
619 (% class="box infomessage" %)
620 (((
621 Размер миникарты относительной полного размера карты, а не контейнера, в которой она находится.
622 )))
623
624 ==== multidayslessonsskillstarif(% style="display:none" %) (%%)fs ====
625
626 Тип данных:##// Array<number> //##//|## object##//
627
628 По умолчанию:##// []//##
629
630 (% class="box infomessage" %)
631 (((
632 Производит фильтрацию тарифов для многодневных занятий. Принимает массив идентификаторов.
633 Параметр дополняет фильтрацию по параметру **##grouplessonsskillstariffs##**.
634 )))
635
636 ==== nocategories ====
637
638 Тип данных:##// boolean//##
639
640 По умолчанию:##// false//##
641
642 (% class="box warningmessage" %)
643 (((
644 Описание отсутствует
645 )))
646
647 ==== nocoach ====
648
649 Тип данных:##// boolean//##
650
651 По умолчанию:##// false//##
652
653 (% class="box warningmessage" %)
654 (((
655 Описание отсутствует
656 )))
657
658 ==== nolocations ====
659
660 Тип данных:##// boolean//##
661
662 По умолчанию:##// false//##
663
664 (% class="box warningmessage" %)
665 (((
666 Описание отсутствует
667 )))
668
669 ==== nopromo ====
670
671 Тип данных:##// boolean//##
672
673 По умолчанию:##// false//##
674
675 (% class="box infomessage" %)
676 (((
677 Убирает вывод промокода на странице подтверждения заказа.
678 )))
679
680 ==== noskills ====
681
682 Тип данных:##// boolean//##
683
684 По умолчанию:##// false//##
685
686 (% class="box warningmessage" %)
687 (((
688 Описание отсутствует
689 )))
690
691 ==== notariffs ====
692
693 Тип данных:##// boolean//##
694
695 По умолчанию:##// false//##
696
697 (% class="box warningmessage" %)
698 (((
699 Описание отсутствует
700 )))
701
702 ==== onlytab ====
703
704 Тип данных:##// string //##//|## Array<string>##//
705
706 По умолчанию:##// []//##
707
708 (% class="box infomessage" %)
709 (((
710 Скрытие других вкладок виджета («покупка услуг» или «пополнение услуг») при загрузке. Обычно используется в комбинации с параметром **##forcetab##**
711 )))
712
713 {{code language="javascript"}}
714 onlytab: 'service' // покажет только вкладку «покупка услуг».
715 onlytab: 'rewrite' // покажет только вкладку «пополнение услуг».
716 onlytab: ['service', 'rewrite'] // покажет только вкладки «покупка услуг» и «пополнение услуг»;
717 {{/code}}
718
719 ==== ordercomment ====
720
721 Тип данных:##// string//##
722
723 По умолчанию:##// ''//##
724
725 (% class="box infomessage" %)
726 (((
727 Опциональный комментарий к заказу. Максимальная длинна комментария 50 символов.
728 )))
729
730 ==== personallessonsskillstariffs ====
731
732 Тип данных:##// Array<number> //##//|## object##//
733
734 По умолчанию:##// []//##
735
736 (% class="box infomessage" %)
737 (((
738 Производит фильтрацию тарифов для индивидуальных занятий. Принимает массив идентификаторов.
739 )))
740
741 ==== placeid ====
742
743 Тип данных:##// number//##
744
745 По умолчанию:##// undefined//##
746
747 (% class="box warningmessage" %)
748 (((
749 Описание отсутствует
750 )))
751
752 ==== requiredloyalty ====
753
754 Тип данных:##// boolean//##
755
756 По умолчанию:##// false//##
757
758 (% class="box infomessage" %)
759 (((
760 Включает обязательную регистрацию клиента в программе настроенной на объектке.
761 )))
762
763 ==== resetcart ====
764
765 Тип данных:##// boolean//##
766
767 По умолчанию:##// false//##
768
769 (% class="box infomessage" %)
770 (((
771 Автоматически очищать содержимое корзины.
772 )))
773
774 ==== rewritetariffsid ====
775
776 Тип данных:##// Array<number>//##
777
778 По умолчанию:##// []//##
779
780 (% class="box warningmessage" %)
781 (((
782 Описание отсутствует
783 )))
784
785 ==== saletermstype ====
786
787 Тип данных:##// string//##
788
789 По умолчанию:##// '//default//'//##
790
791 (% class="box infomessage" %)
792 (((
793 Перед оплатой просит пользователя согласиться с правилами в форме галочки или всплывающего окна
794 )))
795
796 {{code language="javascript"}}
797 saletermstype: 'checkbox' // потребует установку галочки для согласия.
798 saletermstype: 'dialog' // покажет всплывающее окно с правилами, которые нужно принять.
799 saletermstype: 'default' // принятие правил не требуется.
800 {{/code}}
801
802 ==== shownoticketsseances ====
803
804 Тип данных:##// boolean//##
805
806 По умолчанию:##// false//##
807
808 (% class="box warningmessage" %)
809 (((
810 Описание отсутствует
811 )))
812
813 ==== showoverseances ====
814
815 Тип данных:##// boolean//##
816
817 По умолчанию:##// false//##
818
819 (% class="box infomessage" %)
820 (((
821 Отвечает за отображение прошедших сеансов в списке для фильтрации по времени. При значении **##true##** прошедшие сеансы будут отображаться, но недоступны для выбора пользователем. Работает если **##tariffsseancesfilter: true##**
822 )))
823
824 [[image:1702554598837-627.png]]
825
826 ==== skills ====
827
828 Тип данных:##// Array<number>//##
829
830 По умолчанию:##// []//##
831
832 (% class="box warningmessage" %)
833 (((
834 Описание отсутствует
835 )))
836
837 ==== tariffsseancesfilter ====
838
839 Тип данных:##// boolean//##
840
841 По умолчанию:##// false//##
842
843 (% class="box infomessage" %)
844 (((
845 Включить отображение фильтра тарифов по сеансам.
846 )))
847
848 [[image:https://info.moipass.ru/images/tariffsseancesfilter.png||alt="Example"]]