Интеграция чрез JavaScript
Този вариант е подходящ, ако имате достъп до HTML и JavaScript на сайта си и искате сами да управлявате как и къде се отваря widget-ът.
Какво ви е нужно
- Активни онлайн резервации за обекта.
- Правилен
slugза обекта или профила, който ще показвате. - Достъп до страницата, в която ще добавите кода.
Базово инициализиране
Добавете следния код в страницата, в която искате да инициализирате widget-а:
<script>
window.RSConfig = {
type: 'location_services',
slug: 'your-location-slug',
};
!(function (b, c, d) {
var a,
e = b.getElementsByTagName(c)[0];
b.getElementById(d) ||
(((a = b.createElement(c)).id = d),
(a.src = 'https://js-widget.reservation.studio/v2/widget.min.js'),
e.parentNode.insertBefore(a, e),
(a.onload = function () {
window.RSWidget(RSConfig);
}));
})(document, 'script', 'rs-booking-widget-js');
</script>
Този код зарежда widget runtime-а и подава основната конфигурация. След това трябва да решите как потребителят ще го отвори.
Какво правят задължителните полета
type
Определя какво ще се отвори във widget-а. Потвърдените типове в текущите интеграции са:
location_profilelocation_serviceslocation_service_categorylocation_classesbusiness_profile
slug
Това е идентификаторът на профила, който widget-ът трябва да отвори. Ако slug липсва или не отг оваря на избрания type, widget-ът няма да зареди правилната цел.
language
Ако не подадете език, widget-ът използва езика на браузъра и fallback към поддържаните езици. Потвърдените стойности в текущия код са:
bgende
Пример:
window.RSConfig = {
type: 'location_services',
slug: 'your-location-slug',
language: 'en',
};
Как потребителят отваря widget-а
От бутон или линк в страницата
Използвайте buttons_selector, когато искате widget-ът да се отваря от един или повече елементи в страницата:
<button class="open-booking-widget">Резервирай сега</button>
<script>
window.RSConfig = {
type: 'location_services',
slug: 'your-location-slug',
buttons_selector: '.open-booking-widget',
};
</script>
Всички елементи, които отговарят на селектора, ще отварят една и съща цел.
Различни цели с data-* атрибути
Ако искате различни бутони или линкове да отварят различни цели, можете да запазите един общ buttons_selector и да подадете override-и през data-* атрибути на самия елемент.
Потвърдените override-и в текущия JavaScript widget са:
data-slugdata-typedata-languagedata-utm
Пример:
<button class="open-booking-widget" data-slug="location-2">
Резервирай в обект 2
</button>
<button class="open-booking-widget" data-language="en">Book in English</button>
<button class="open-booking-widget" data-type="business_profile">
Виж бизнес профила
</button>
<button
class="open-booking-widget"
data-utm='{"source":"newsletter","medium":"email","campaign":"spring"}'
>
Резервирай от бюлетина
</button>
<script>
window.RSConfig = {
type: 'location_services',
slug: 'default-location',
buttons_selector: '.open-booking-widget',
};
</script>
При клик widget-ът взема основната конфигурация и я override-ва само за избрания елемент.
Как се подават параметрите през data-*
data-slugсменя целевияslug.data-typeсменя типа на целта, напримерlocation_servicesилиbusiness_profile.data-languageподава език за конкретния бутон.data-utmподава JSON обект със стойности за:sourcemediumcampaigncontentterm
Пример само за UTM:
<button
class="open-booking-widget"
data-utm='{"source":"facebook","medium":"paid","campaign":"summer"}'
>
Резервирай от кампанията
</button>
Важно:
- стойността на
data-utmтрябва да е валиден JSON низ; - за
data-typeиdata-languageсе приемат само стойности, които widget-ът разпознава; - в текущия потвърден код per-element override-ите са за
slug,type,languageиutm, не за произволни вложени параметри от стари интеграции.
От плаващ бутон
Ако искате widget-ът да се отваря от плаващ бутон, подайте sticky_button:
window.RSConfig = {
type: 'location_services',
slug: 'your-location-slug',
sticky_button: {
text: 'Запази час',
text_color: '#ffffff',
background_color: '#343232',
position: 'right-middle',
},
};
Потвърдените полета за плаващия бутон в текущите интеграции са:
texttext_colorbackground_colortooltip_texttooltip_show_delaytooltip_expire_timeposition
Потвърдените позиции са:
top-left,top-middle,top-rightright-top,right-middle,right-bottombottom-left,bottom-middle,bottom-rightleft-top,left-middle,left-bottom
Как се настройва modal widget-ът
modal
Можете да ограничите максималния размер на модалния прозорец с:
max_widthmax_height
Пример:
window.RSConfig = {
type: 'location_services',
slug: 'your-location-slug',
modal: {
max_width: '1320px',
max_height: '95%',
},
};
Тези настройки важат само за modal widget. Те не се използват при iframe embed.
UTM параметри
Можете да подадете UTM параметри в основната конфигурация:
window.RSConfig = {
type: 'location_services',
slug: 'your-location-slug',
utm: {
source: 'facebook',
medium: 'paid',
campaign: 'summer',
},
};
Поддържаните ключове са:
sourcemediumcampaigncontentterm
Ако не подадете UTM стойности, widget-ът може да използва:
- UTM параметрите от текущия URL;
- предварително запазени UTM стойности;
- fallback
reservation.studio / js-widget, когато липсва друга стойност.
Най-честите готови конфигурации
Бутон към каталог с услуги
<button class="open-booking-widget">Резервирай сега</button>
<script>
window.RSConfig = {
type: 'location_services',
slug: 'your-location-slug',
buttons_selector: '.open-booking-widget',
};
</script>
Плаващ бутон
window.RSConfig = {
type: 'location_services',
slug: 'your-location-slug',
sticky_button: {
text: 'Запази час',
text_color: '#ffffff',
background_color: '#343232',
position: 'right-middle',
},
};
Различни бутони към различни цели
<button class="open-booking-widget" data-slug="location-1">Обект 1</button>
<button class="open-booking-widget" data-slug="location-2">Обект 2</button>
<button class="open-booking-widget" data-type="business_profile">
Бизнес профил
</button>
<script>
window.RSConfig = {
type: 'location_services',
slug: 'default-location',
buttons_selector: '.open-booking-widget',
};
</script>
Бутон с отделни UTM параметри
<button
class="open-booking-widget"
data-utm='{"source":"newsletter","medium":"email","campaign":"spring"}'
>
Резервирай от бюлетина
</button>
Кога този вариант е подходящ
- когато имате custom сайт;
- когато искате да управлявате интеграцията директно от кода на страницата;
- когато искате modal widget, отварян от собствен бутон, линк или плаващ бутон;
- когато не искате да зависите от WordPress shortcode generator.
Важно
- Самото
type + slugописва целта на widget-а, но трябва и да решите как потребителят ще го отвори. buttons_selector,sticky_buttonиmodalса настройки за modal widget.data-*override-ите са част от JavaScript trigger логиката. WordPress shortcode бутоните и линковете използват същия принцип под капака, но самите shortcode-и са описани отделно в Интеграция с WordPress.- В текущата документация inline iframe embed е описан през WordPress shortcode flow, не като отделен JavaScript API вариант.