Moduł: Publiczna strona klubu
Każdy klub Shootero dostaje publiczną stronę pod adresem portal.shootero.pl/SLUG, gdzie SLUG to unikalny identyfikator klubu (np. klub-strzelecki-warszawa).
Strona służy do:
- Prezentacji klubu (opis, kontakt, social media, mapa)
- Pokazywania publicznych wydarzeń (kalendarz)
- Ofertowania treningów
- Listy zawodów
- Sprzedaży voucherów online (osobny moduł)
Konfiguracja
Wymagana rola: admin lub zarzad (członek zarządu klubu).
Wejdź w /club/public-page (link w panelu admin sidebar).
Konfigurowalne moduły
Każdy moduł można włączyć/wyłączyć niezależnie:
| Moduł | Co pokazuje | Wymaga |
|---|---|---|
| Kalendarz | calendar_events z flagą is_public=1 | Wpisy w /calendar z zaznaczonym "publiczne" |
| Treningi | trainings z flagą is_public=1 | Trening z polem "publiczny" + (opcjonalnie) entry_fee |
| Zawody | competitions z flagą is_public=1 | Zawody oznaczone jako publiczne |
| Sklep voucherów | Vouchery klubu (typ ticket/giftcard) | Wymaga konfiguracji P24 + katalogu voucherów |
Strona główna jest zawsze widoczna — pozostałe są opcjonalne.
Edycja treści
- Slug URL — tylko rola
adminmoże zmieniać (chroni publiczny URL klubu przed pomyłką). - Opis klubu — pole
description(max 2000 znaków, plain text z preserved newlines). - Strona WWW —
website_url(walidowane jako URL). - Facebook / Instagram —
social_facebook,social_instagram(URL). - Lokalizacja (mapa) — szerokość/długość geograficzna. Wyświetla OpenStreetMap iframe.
- Hero image — zdjęcie tła sekcji głównej (JPG/PNG/WebP, max 5 MB, zalecane 1920×600px).
Branding
Branding (logo + kolory + custom CSS) konfiguruje się w Konfiguracja → Branding (/club-customization). Te ustawienia automatycznie stosują się do publicznej strony:
primary_color— kolor głównych elementów (hero gradient, CTA buttons)navbar_bg— tło górnej nawigacjilogo_path— logo w navbar + footercustom_css— dowolny CSS (uważnie — może popsuć layout)
Slug — zasady
- Format: małe litery, cyfry, myślniki. Bez polskich znaków.
- Długość: 2-60 znaków.
- Zarezerwowane:
admin,auth,api,pub,legal,help,portal,pay,dashboard,member,gdpr,2fa,register,static,favicon.ico,robots.txt,k,c,club,shootero,www,mail,webhook,masterlogin,club-select,system-logo,demo— nie można użyć. - Auto-generated przy tworzeniu klubu z nazwy (
Klub Strzelecki Warszawa→klub-strzelecki-warszawa).
Zmiana slug = łamanie istniejących linków! Stare URL przestają działać. Pomyśl 2x przed zmianą.
Płatności online
Jeśli włączysz moduł Sklep voucherów, potrzebujesz konfiguracji bramki płatności:
- Załóż konto w Przelewy24 (~3 dni weryfikacji).
- Konfiguracja w
Konfiguracja → Płatności → P24:
- merchant ID
- POS ID
- API key
- CRC key
- Sandbox toggle (true do testów)
- Aktywacja
p24_enabled = 1w club_settings.
Bez tej konfiguracji moduł Sklep voucherów wciąż widoczny, ale przy próbie zakupu klient widzi error "klub nie ma skonfigurowanej bramki płatności".
Współpraca z innymi modułami
- Kalendarz używa flagi
is_publicna poziomie wydarzenia. W panelu kalendarza zaznacz checkbox "Publiczne" żeby wydarzenie pojawiło się na stronie klubu. - Treningi — analogicznie, flaga w panelu treningu.
- Zawody — domyślnie
is_public=1odmigration_v34(backfill). - Vouchery — patrz docs/user/modules/vouchers.md.
SEO
Publiczna strona klubu ma:
<title>= nazwa klubu<meta description>= opis klubu (do 200 znaków)- Open Graph tags (og:title, og:description, og:image)
- Strukturę: H1 = nazwa klubu, hierarchia H2/H3 z modułów
Linki w stopce: prowadzą do dokumentów prawnych (regulamin, polityka prywatności) — wymagane przez RODO i ustawę o świadczeniu usług drogą elektroniczną.
Bezpieczeństwo
- Tenant isolation: wszystkie queries są scoped per
club_id. Klub A nie widzi żadnych danych klubu B. - CSRF: form zapisu w
/club/public-pagechroniony tokenem. - Uploads: hero image walidowany przez MIME type + size limit + random filename (anti enumeration).
- Slug change: tylko
admin(niezarzad) — chroni publiczny URL przed niezamierzoną zmianą.
Powiązane
- Moduł vouchers — sklep online
- Konfiguracja klubu — branding, słowniki, użytkownicy
- Regulamin — sekcja "Plany i opłaty"