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

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

Последние авторы
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 infomessage" %)
647 (((
648 Если **##true##** скрывает фильтр по категории инструкторских занятий
649 )))
650
651 [[image:1702638427440-675.png]]
652
653 ==== nocoach ====
654
655 Тип данных:##// boolean//##
656
657 По умолчанию:##// false//##
658
659 (% class="box infomessage" %)
660 (((
661 Если **##true##** скрывает выпадающее меню выбора инструктора
662 )))
663
664 [[image:1702638265778-588.png]]
665
666 ==== nolocation ====
667
668 Тип данных:##// boolean//##
669
670 По умолчанию:##// false//##
671
672 (% class="box infomessage" %)
673 (((
674 Если **##true##** скрывает фильтр по месту проведения инструкторских занятий
675 )))
676
677 ==== [[image:1702638034420-756.png]] ====
678
679 ==== nopromo ====
680
681 Тип данных:##// boolean//##
682
683 По умолчанию:##// false//##
684
685 (% class="box infomessage" %)
686 (((
687 Убирает вывод промокода на странице подтверждения заказа.
688 )))
689
690 ==== noskills ====
691
692 Тип данных:##// boolean//##
693
694 По умолчанию:##// false//##
695
696 (% class="box infomessage" %)
697 (((
698 Если **##true##** скрывает фильтр по дисциплине инструкторских занятий
699 )))
700
701 [[image:1702638705750-678.png]]
702
703 ==== notariffs ====
704
705 Тип данных:##// boolean//##
706
707 По умолчанию:##// false//##
708
709 (% class="box warningmessage" %)
710 (((
711 Описание отсутствует
712 )))
713
714 ==== onlytab ====
715
716 Тип данных:##// string //##//|## Array<string>##//
717
718 По умолчанию:##// []//##
719
720 (% class="box infomessage" %)
721 (((
722 Скрытие других вкладок виджета («покупка услуг» или «пополнение услуг») при загрузке. Обычно используется в комбинации с параметром **##forcetab##**
723 )))
724
725 {{code language="javascript"}}
726 onlytab: 'service' // покажет только вкладку «покупка услуг».
727 onlytab: 'rewrite' // покажет только вкладку «пополнение услуг».
728 onlytab: ['service', 'rewrite'] // покажет только вкладки «покупка услуг» и «пополнение услуг»;
729 {{/code}}
730
731 ==== ordercomment ====
732
733 Тип данных:##// string//##
734
735 По умолчанию:##// ''//##
736
737 (% class="box infomessage" %)
738 (((
739 Опциональный комментарий к заказу. Максимальная длинна комментария 50 символов.
740 )))
741
742 ==== personallessonsskillstariffs ====
743
744 Тип данных:##// Array<number> //##//|## object##//
745
746 По умолчанию:##// []//##
747
748 (% class="box infomessage" %)
749 (((
750 Производит фильтрацию тарифов для индивидуальных занятий. Принимает массив идентификаторов.
751 )))
752
753 ==== placeid ====
754
755 Тип данных:##// number//##
756
757 По умолчанию:##// undefined//##
758
759 (% class="box warningmessage" %)
760 (((
761 Описание отсутствует
762 )))
763
764 ==== requiredloyalty ====
765
766 Тип данных:##// boolean//##
767
768 По умолчанию:##// false//##
769
770 (% class="box infomessage" %)
771 (((
772 Включает обязательную регистрацию клиента в программе настроенной на объектке.
773 )))
774
775 ==== resetcart ====
776
777 Тип данных:##// boolean//##
778
779 По умолчанию:##// false//##
780
781 (% class="box infomessage" %)
782 (((
783 Автоматически очищать содержимое корзины.
784 )))
785
786 ==== rewritetariffsid ====
787
788 Тип данных:##// Array<number>//##
789
790 По умолчанию:##// []//##
791
792 (% class="box warningmessage" %)
793 (((
794 Описание отсутствует
795 )))
796
797 ==== saletermstype ====
798
799 Тип данных:##// string//##
800
801 По умолчанию:##// '//default//'//##
802
803 (% class="box infomessage" %)
804 (((
805 Перед оплатой просит пользователя согласиться с правилами в форме галочки или всплывающего окна
806 )))
807
808 {{code language="javascript"}}
809 saletermstype: 'checkbox' // потребует установку галочки для согласия.
810 saletermstype: 'dialog' // покажет всплывающее окно с правилами, которые нужно принять.
811 saletermstype: 'default' // принятие правил не требуется.
812 {{/code}}
813
814 ==== shownoticketsseances ====
815
816 Тип данных:##// boolean//##
817
818 По умолчанию:##// false//##
819
820 (% class="box infomessage" %)
821 (((
822 Не скрывать сеансы, на которые закончились билеты. Работает если **##tariffsseancesfilter: true##**
823 )))
824
825 ==== showoverseances ====
826
827 Тип данных:##// boolean//##
828
829 По умолчанию:##// false//##
830
831 (% class="box infomessage" %)
832 (((
833 Отвечает за отображение прошедших сеансов в списке для фильтрации по времени. При значении **##true##** прошедшие сеансы будут отображаться, но недоступны для выбора пользователем. Работает если **##tariffsseancesfilter: true##**
834 )))
835
836 [[image:1702554598837-627.png]]
837
838 ==== skills ====
839
840 Тип данных:##// Array<number>//##
841
842 По умолчанию:##// []//##
843
844 (% class="box warningmessage" %)
845 (((
846 Описание отсутствует
847 )))
848
849 ==== tariffsseancesfilter ====
850
851 Тип данных:##// boolean//##
852
853 По умолчанию:##// false//##
854
855 (% class="box infomessage" %)
856 (((
857 Включить отображение фильтра тарифов по сеансам.
858 )))
859
860 [[image:https://info.moipass.ru/images/tariffsseancesfilter.png||alt="Example"]]