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

Версия 39.1 от Михаил Галич на 15.12.2023, 14:01

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