# Evenemangsrutan från Vadhänderi – installation för utvecklare och AI-agenter

In English, briefly: a free box that shows events near a hotel on the hotel's own website. Get a key for the host the
box runs on (step 1), paste the snippet (step 2). The key is tied to the website's host, not to the hotel.

Rutan visar de populäraste evenemangen nära hotellet med en knapp till hotellets egen bokning. Den är gratis, sätter inga
kakor och uppdaterar sig själv. Inställningssidan för människor: https://vadhanderi.se/widget

## Steg 1: hämta nyckeln för den webbplats där rutan ska synas

Nyckeln hör till **värdnamnet där rutan visas** (till exempel `www.hotellet.se`, `hotellet.se` och `localhost` räknas
som `hotellet.se` respektive `localhost`; `www.` och port räknas inte). Den hör inte till hotellet. Visas rutan på en
annan webbplats än hotellets egen behövs nyckeln för den webbplatsen.

    GET https://vadhanderi.se/widget/api?op=hotell&webb=<värdnamn>

Svaret är JSON: `nyckel` (16 tecken), `site` (värdnamnet som nyckeln gäller) och `hotel` (hotellet vi känner igen på
värdnamnet, eller `null`). Anropa från en server eller från kommandoraden, inte från webbläsaren: en webbläsare på en
annan webbplats får inget CORS-svar på just den frågan. Nyckeln är ingen hemlighet (den står i sidans kod), men lägg den
i sidans konfiguration.

## Steg 2: klistra in koden där rutan ska synas

    <div data-vadhanderi-widget data-nyckel="<nyckel>">
      <a href="https://vadhanderi.se/">Evenemang – Vadhänderi</a>
    </div>
    <script src="https://vadhanderi.se/widget/v1.js" async></script>

Länken inne i rutan syns tills rutan har laddats och för sökmotorer. Skriptet behövs en gång per sida, även om sidan har
flera rutor.

**Vilket hotell och vilken ort:** känner vi igen webbplatsens värdnamn (steg 1 gav `hotel`) behövs inget mer. Annars:
- `data-hotell="<hotell-id>"` väljer hotellet. Det behövs till exempel på en sajt som visar flera hotell, en rad per
  hotell. Ett id får du av oss.
- `data-ort="<kommun>"` väljer orten när inget hotell anges. Kommunernas namn i adressform finns i
  https://vadhanderi.se/widget/kommuner.json, till exempel `almhult` och `goteborg`.

## Inställningar (alla valfria, data-attribut på rutan)

| Attribut | Värden | Standard |
|---|---|---|
| `data-antal` | antal evenemang som visas först, 1–30 ("Visa fler" visar resten) | 5 |
| `data-dagar` | antal dagar framåt, 1–60 | 60 |
| `data-fran`, `data-till` | datum `ÅÅÅÅ-MM-DD`: visar gästens vistelse (går också som `?fran=…&till=…` i sidans adress) | idag och framåt |
| `data-popularitet` | urval: `alla` (alla evenemang), `populara` (bara de vi bedömer som populära), `mest` (bara de allra mest populära); de populäraste visas alltid först | `populara` |
| `data-egna` | `nej` döljer hotellets egna evenemang; annars visas de i en egen del under evenemangen i närheten, i datumordning | visas |
| `data-grannar` | `nej` visar bara hotellets egen kommun (inställningssidan: "Visa stora evenemang i grannkommunerna"); annars kan de allra mest populära evenemangen inom 4,5 mil, som folk reser till, komma med, högst två åt gången, märkta med plats och avstånd (`i Huseby Bruk – 32 km`) | visas |
| `data-kategorier` | bara dessa kategorier, kommaseparerade (se nedan) | alla |
| `data-profil` | kategorier som lyfts fram först, kommaseparerade; `families` lyfter barnfamiljer | hotellets profil |
| `data-malgrupp` | `families`, `adults`, `youth`, `seniors` | alla |
| `data-uteslut` | kategorier som inte visas; `kyrka,bio` är standard, `data-uteslut=""` visar allt | `kyrka,bio` |
| `data-dolj-arrangor` | arrangörer som inte visas, kommaseparerade namn | inga |
| `data-bokning` | hotellets bokningslänk (datumet fylls i när vi känner bokningssystemet) | den vi känner till |
| `data-tom-text`, `data-tom-lank` | text och länk när inget finns att visa | "Just nu har vi inget att visa här. Har du något att tipsa om?" med länk till ortens tipsruta |
| `data-sprak` | `sv`, `en` | sidans språk |
| `data-tema` | `mork` för mörk bakgrund | ljus |
| `data-farg` | accentfärg, t.ex. `#174f3d` | grön |
| `data-rubrik` | `nej`: ingen rubrik i rutan (sidan har en egen); annan text: den texten som rubrik | "Det händer nära <hotellet>" |
| `data-bredd` | `full`: lika bred som sidans spalt (eller sätt CSS-variabeln `--vh-max-width` på rutans element) | högst 720 px |
| `data-stil` | `rader`: rader med tunna linjer, inget annat; `kort`: de grå korten som före 2026-10-27 | automatiskt: rader, och står rutan bland fristående block (egen bakgrund med ram eller skugga, samma textfärg som sidan) tar den det närmaste blockets bakgrund, ram, hörn och luft |
| `data-bakgrund` | rutans bakgrund, hex, t.ex. `#ffffff` (bara ljust utseende) | genomskinlig |
| `data-linje` | färgen på ram och linjer, hex, t.ex. `#e6e2da` (bara ljust utseende) | blandad ur sidans textfärg |
| `data-flik` | `samma` öppnar länkar i samma flik | ny flik |

Kategorier: `konsert`, `musik`, `nightclub`, `festival`, `bio`, `teater` (teater och humor), `dans`, `föreläsning`,
`litteratur`, `workshop`, `hantverk`, `konst`, `historia`, `quiz` (quiz och spel), `träffpunkt`, `marknad`, `mat`, `sport`,
`träning`, `natur`, `kyrka`. De äldre nycklarna `humor` och `spel` fungerar fortfarande och betyder `teater` och `quiz`.

## Andra sätt att installera

- **WordPress:** tillägget https://vadhanderi.se/widget/vadhanderi-evenemang.zip (Tillägg → Lägg till nytt → Ladda upp). Det hämtar
  nyckeln själv. Använd blocket "Vad händer i" eller kortkoden `[vadhanderi]`.
- **Wix och sidbyggare utan skript:** en iframe:
  `<iframe src="https://vadhanderi.se/widget/ram?nyckel=<nyckel>&site=<värdnamn>" title="Evenemang nära oss" style="width:100%;max-width:720px;height:710px;border:0" loading="lazy"></iframe>`
  (samma inställningar som ovan, utan `data-`, som parametrar i adressen).

## Kontrollera och felsök

- Prova anropet som rutan gör:
  `GET https://vadhanderi.se/widget/api?nyckel=<nyckel>&site=<värdnamn>` (lägg till `&hotell=<id>` eller `&ort=<kommun>` vid behov).
  Svaret har `town`, `hotel` och `rows`.
- **403 `{"error":"key"}`:** nyckeln hör inte till värdnamnet som frågar. Vanligast är att nyckeln togs fram för
  hotellets domän men rutan visas på en annan webbplats, eller på en förhandsadress med slumpat namn. Ta fram en nyckel
  för just det värdnamnet (steg 1).
- **Tom ruta utan fel:** ingen ort och inget hotell känns igen. Lägg till `data-ort` eller `data-hotell`.
- **"Just nu har vi inget att visa här":** rutan visar bara det som finns inom de valda dagarna och urvalet, aldrig
  utfyllnad från andra orter. Prova `data-popularitet="alla"` om ni hellre vill ha fler.
- Gräns: 60 anrop i minuten per IP-adress. Svaren cachas i 5 minuter.

Frågor: https://vadhanderi.se/kontakt
