Publiczny kalendarz rezerwacji
Instrukcja (WordPress / strona firmy)
Publiczny kalendarz można osadzić na stronie AcePark przez iframe, np.:
<iframe
src="https://klient.acepark.pl/book/ace-park?city=Opole&street=Spokojna"
style="width:100%;height:760px;border:0;background:transparent"
title="Rezerwacja kortu"
allowtransparency="true"
></iframe>
Parametry city i street przypinają lokalizację — na stronie lokalizacji nie trzeba już wybierać obiektu.
Tło strony bookingu jest przezroczyste, żeby w iframe przeświecało tło WordPressa. Same karty (filtry, siatka, dialogi) zostają nieprzezroczyste.
W iframe ukrywany jest nagłówek strony („Zarezerwuj kort” / „Wybierz termin…”) — WordPress ma już swój tytuł sekcji. Przy bezpośrednim wejściu na /book/... nagłówek zostaje.
Filtry, wybór daty, wybór kortu i formularz rezerwacji otwierają się jako wyśrodkowany dialog (nie jako dolny drawer). Dzięki temu overlay wygląda poprawnie także w iframe na WordPressie.
Dokumentacja techniczna
- Trasa:
app/(public)/book/[tenant]/ - Overlaye (Dialog shadcn, bez Vaul Drawer):
PublicFiltersBar— lokalizacja / czas trwaniaPublicDateCalendar— wybór dniaPublicTimeDialog— wybór kortu dla godzinyReservationDialog— OTP + potwierdzenie + płatność
- Tło
html/bodyi wrappera kalendarza jest przezroczyste (TransparentPageBackground+bg-transparent), żeby embed na WordPressie dziedziczył tło strony hosta. - Wykrywanie iframe:
useIsInIframe(window.self !== window.top). W embedzie ukrywany jest<header>z tytułem/podtytułem. - W iframe dialogi nie używają
backdrop-blurani przyciemnienia tła (rozmazuje/przyciemnia stronę hosta pod ramką) — overlay jest przezroczysty (html[data-in-iframe]). - Osadzanie cross-origin wymaga CSP
frame-ancestorsprzez envPUBLIC_BOOKING_FRAME_ANCESTORS(middleware ustawia nagłówek tylko dla/book/*). Przykład:
PUBLIC_BOOKING_FRAME_ANCESTORS='self' https://acepark.pl https://www.acepark.pl
Bez domeny hosta w allowliście przeglądarka zablokuje iframe (frame-ancestors).