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

Версия 42.1 от Михаил Галич на 15.12.2023, 17:31

Последние авторы
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 ==== lessonslocation ====
539
540 Тип данных:##// number//##
541
542 По умолчанию:##// undefined//##
543
544 (% class="box infomessage" %)
545 (((
546 Отображение места занятия для индивидуальных, групповых и многодневных занятий
547 )))
548
549 [[image:1702560957244-690.png]]
550
551 ==== lessonstariffsid ====
552
553 Тип данных:##// Array<number>//##
554
555 По умолчанию:##// []//##
556
557 (% class="box infomessage" %)
558 (((
559 Ограничить видимость доступных тарифов в выпадающем списке программ обучения по массиву с их идентификаторами
560 )))
561
562 [[image:1702641274330-465.png]]
563
564 ==== locale ====
565
566 Тип данных:##// string//##
567
568 По умолчанию:##// ''//##
569
570 (% class="box infomessage" %)
571 (((
572 Параметр локализации. Позволяет переключать между языками виджета, например 'ru' - русский язык, 'en' - английский язык.
573 )))
574
575 ==== marketbillid ====
576
577 Тип данных:##// number//##
578
579 По умолчанию:##// undefined//##
580
581 (% class="box warningmessage" %)
582 (((
583 Описание отсутствует
584 )))
585
586 ==== marketemployeeid ====
587
588 Тип данных:##// number//##
589
590 По умолчанию:##// undefined//##
591
592 (% class="box warningmessage" %)
593 (((
594 Описание отсутствует
595 )))
596
597 ==== minimap ====
598
599 Тип данных:##// boolean//##
600
601 По умолчанию:##// true//##
602
603 (% class="box infomessage" %)
604 (((
605 Отображать миникарту.
606 )))
607
608 ==== minimapaspect ====
609
610 Тип данных:##// number//##
611
612 По умолчанию:##// 0.2//##
613
614 (% class="box infomessage" %)
615 (((
616 Размер миникарты относительной полного размера карты, а не контейнера, в которой она находится.
617 )))
618
619 ==== multidayslessonsskillstarif(% style="display:none" %) (%%)fs ====
620
621 Тип данных:##// Array<number> //##//|## object##//
622
623 По умолчанию:##// []//##
624
625 (% class="box infomessage" %)
626 (((
627 Производит фильтрацию тарифов для многодневных занятий. Принимает массив идентификаторов.
628 Параметр дополняет фильтрацию по параметру **##grouplessonsskillstariffs##**.
629 )))
630
631 ==== nocategories ====
632
633 Тип данных:##// boolean//##
634
635 По умолчанию:##// false//##
636
637 (% class="box infomessage" %)
638 (((
639 Если **##true##** скрывает фильтр по категории инструкторских занятий
640 )))
641
642 [[image:1702638427440-675.png]]
643
644 ==== nocoach ====
645
646 Тип данных:##// boolean//##
647
648 По умолчанию:##// false//##
649
650 (% class="box infomessage" %)
651 (((
652 Если **##true##** скрывает выпадающее меню выбора инструктора
653 )))
654
655 [[image:1702638265778-588.png]]
656
657 ==== nolocation ====
658
659 Тип данных:##// boolean//##
660
661 По умолчанию:##// false//##
662
663 (% class="box infomessage" %)
664 (((
665 Если **##true##** скрывает фильтр по месту проведения инструкторских занятий
666 )))
667
668 [[image:1702638034420-756.png]]
669
670 ==== nopromo ====
671
672 Тип данных:##// boolean//##
673
674 По умолчанию:##// false//##
675
676 (% class="box infomessage" %)
677 (((
678 Убирает вывод промокода на странице подтверждения заказа.
679 )))
680
681 ==== noskills ====
682
683 Тип данных:##// boolean//##
684
685 По умолчанию:##// false//##
686
687 (% class="box infomessage" %)
688 (((
689 Если **##true##** скрывает фильтр по дисциплине инструкторских занятий
690 )))
691
692 [[image:1702638705750-678.png]]
693
694 ==== notariffs ====
695
696 Тип данных:##// boolean//##
697
698 По умолчанию:##// false//##
699
700 (% class="box warningmessage" %)
701 (((
702 Описание отсутствует
703 )))
704
705 ==== onlytab ====
706
707 Тип данных:##// string //##//|## Array<string>##//
708
709 По умолчанию:##// []//##
710
711 (% class="box infomessage" %)
712 (((
713 Скрытие других вкладок виджета («покупка услуг» или «пополнение услуг») при загрузке. Обычно используется в комбинации с параметром **##forcetab##**
714 )))
715
716 {{code language="javascript"}}
717 onlytab: 'service' // покажет только вкладку «покупка услуг».
718 onlytab: 'rewrite' // покажет только вкладку «пополнение услуг».
719 onlytab: ['service', 'rewrite'] // покажет только вкладки «покупка услуг» и «пополнение услуг»;
720 {{/code}}
721
722 ==== ordercomment ====
723
724 Тип данных:##// string//##
725
726 По умолчанию:##// ''//##
727
728 (% class="box infomessage" %)
729 (((
730 Опциональный комментарий к заказу. Максимальная длинна комментария 50 символов.
731 )))
732
733 ==== personallessonsskillstariffs ====
734
735 Тип данных:##// Array<number> //##//|## object##//
736
737 По умолчанию:##// []//##
738
739 (% class="box infomessage" %)
740 (((
741 Производит фильтрацию тарифов для индивидуальных занятий. Принимает массив идентификаторов.
742 )))
743
744 ==== placeid ====
745
746 Тип данных:##// number//##
747
748 По умолчанию:##// undefined//##
749
750 (% class="box infomessage" %)
751 (((
752 идентификатор места, использующийся для получения списка инструкторов.
753 )))
754
755 ==== requiredloyalty ====
756
757 Тип данных:##// boolean//##
758
759 По умолчанию:##// false//##
760
761 (% class="box infomessage" %)
762 (((
763 Включает обязательную регистрацию клиента в программе настроенной на объектке.
764 )))
765
766 ==== resetcart ====
767
768 Тип данных:##// boolean//##
769
770 По умолчанию:##// false//##
771
772 (% class="box infomessage" %)
773 (((
774 Автоматически очищать содержимое корзины.
775 )))
776
777 ==== rewritetariffsid ====
778
779 Тип данных:##// Array<number>//##
780
781 По умолчанию:##// []//##
782
783 (% class="box warningmessage" %)
784 (((
785 Описание отсутствует
786 )))
787
788 ==== saletermstype ====
789
790 Тип данных:##// string//##
791
792 По умолчанию:##// '//default//'//##
793
794 (% class="box infomessage" %)
795 (((
796 Перед оплатой просит пользователя согласиться с правилами в форме галочки или всплывающего окна
797 )))
798
799 {{code language="javascript"}}
800 saletermstype: 'checkbox' // потребует установку галочки для согласия.
801 saletermstype: 'dialog' // покажет всплывающее окно с правилами, которые нужно принять.
802 saletermstype: 'default' // принятие правил не требуется.
803 {{/code}}
804
805 ==== shownoticketsseances ====
806
807 Тип данных:##// boolean//##
808
809 По умолчанию:##// false//##
810
811 (% class="box infomessage" %)
812 (((
813 Не скрывать сеансы, на которые закончились билеты. Работает если **##tariffsseancesfilter: true##**
814 )))
815
816 ==== showoverseances ====
817
818 Тип данных:##// boolean//##
819
820 По умолчанию:##// false//##
821
822 (% class="box infomessage" %)
823 (((
824 Отвечает за отображение прошедших сеансов в списке для фильтрации по времени. При значении **##true##** прошедшие сеансы будут отображаться, но недоступны для выбора пользователем. Работает если **##tariffsseancesfilter: true##**
825 )))
826
827 [[image:1702554598837-627.png]]
828
829 ==== skills ====
830
831 Тип данных:##// Array<number>//##
832
833 По умолчанию:##// []//##
834
835 (% class="box infomessage" %)
836 (((
837 Ограничить видимость доступных к выбору дисциплин по идентификатору
838 )))
839
840 [[image:1702639385677-964.png]]
841
842 ==== tariffsseancesfilter ====
843
844 Тип данных:##// boolean//##
845
846 По умолчанию:##// false//##
847
848 (% class="box infomessage" %)
849 (((
850 Включить отображение фильтра тарифов по сеансам.
851 )))
852
853 [[image:https://info.moipass.ru/images/tariffsseancesfilter.png||alt="Example"]]