# Events & Messen page (`/veranstaltungen`)

**Last updated:** 2026-04-08

**Page file:** [`v2/pages/static_events.php`](../../../../v2/pages/static_events.php)  
**Canonical URL:** `https://www.ordio.com/veranstaltungen`  
**CSS:** [`v2/css/events-page.css`](../../../../v2/css/events-page.css) (minified: `events-page.min.css`; run `npm run minify` after CSS edits)

## Layout variants on this page

1. **Hero** — Centered headline + intro (Tailwind in page).
2. **Split “Messe” recap** — Gradient card (`from-ordio-blue/5 to-blue-50`), two columns on `md+`:
   - **INTERNORGA 2026:** Video column **left** on desktop (`order-2 md:order-1` for media, `order-3 md:order-2` for copy). Section id: `#internorga-2026`.
   - **INTERGASTRA 2026:** Video column **right** on desktop (inverse column orders). Section id: `#intergastra-2026`.
3. **Supper Club blocks** — Same split pattern; may include image galleries and extra JS height matching (`#supper-club-2`).

## Video assets

- **Convention:** `{slug}-hero.mp4`, `{slug}-hero.webm`, `{slug}-hero-poster.webp` under `v2/img/events/{slug}/`.
- **INTERNORGA:** `v2/img/events/internorga-2026/internorga-2026-hero.*`
- **Encoding:** [`v2/scripts/optimize-events-videos.py`](../../../../v2/scripts/optimize-events-videos.py) — see [`docs/systems/video-optimization/VIDEO_OPTIMIZATION_GUIDE.md`](../../../systems/video-optimization/VIDEO_OPTIMIZATION_GUIDE.md).

## Alpine / JS

- Root: `x-data="eventsPage()"` on `<body>`.
- Section videos use `IntersectionObserver` (threshold `0.5`) to **play when visible**, **pause** when off-screen; keep `muted`, `loop`, `playsinline` aligned with existing blocks.
- **IDs observed:** `internorga-2026-video`, `supper-club-1-video`, `supper-club-2-video`, `intergastra-video`.

## Archived reusable: upcoming trade fair card

**File:** [`v2/sections/partials/events-trade-fair-upcoming-card.php`](../../../../v2/sections/partials/events-trade-fair-upcoming-card.php)

- Full-width “Kommende Veranstaltung” card (left blue border, info grid, external link + **Termin vereinbaren**).
- **Not** included on `/veranstaltungen` by default after 2026-04; use on another page when you need a pre-fair CTA.
- **Dependency:** global Alpine `$store.modal` with `open(title, subtitle)` (same pattern as header lead modal).
- **Usage:** set optional `$events_trade_fair_*` variables (see file docblock), then:

```php
include __DIR__ . '/../sections/partials/events-trade-fair-upcoming-card.php';
```

(Adjust path relative to the including page.)

## Structured data

- JSON-LD `@graph` in page `<head>`: `WebPage`, `Event` nodes for fairs, `ItemList` of anchors, `BreadcrumbList`.
- After adding/removing sections, keep **ItemList** `numberOfItems` and `ListItem` positions consistent with visible anchors.
- **FAQPage:** Post-footer only via [`include-marketing-faq-jsonld.php`](../../../../v2/components/include-marketing-faq-jsonld.php) — do **not** duplicate FAQ JSON-LD in `<head>` ([FAQ_WEBSITE_STANDARD.md](../../FAQ_WEBSITE_STANDARD.md)).

## FAQs (visible + JSON)

- **Data:** [`v2/data/misc-faqs/static_events.json`](../../../../v2/data/misc-faqs/static_events.json) (`canonical_url`: `https://www.ordio.com/veranstaltungen`).
- **Render:** [`render-faq-json.php`](../../../../v2/components/render-faq-json.php) — set `$ordio_faq_json_relpath` before include.
- **Placement:** After **three-card testimonials**, **before** [`footer.php`](../../../../v2/base/footer.php); then post-footer `include-marketing-faq-jsonld.php` (same order as [`static_customers_new.php`](../../../../v2/pages/static_customers_new.php)).
- **Registry / research:** `page_id` **`veranstaltungen`** in [`marketing-pages-registry.json`](../marketing-pages-registry.json); docs under [`static-pages/veranstaltungen/`](veranstaltungen/) (`target-keywords.json`, `KEYWORD_DECISION.md`, pipeline outputs in `data/`).
- **Refresh workflow:** [DATA_COLLECTION_STATIC_SITE.md](DATA_COLLECTION_STATIC_SITE.md) section **Events & Messen `/veranstaltungen`**.
- **Validators:**  
  `php v2/scripts/dev-helpers/verify-faq-jsonld-parity.php --file=misc-faqs/static_events.json`  
  `php v2/scripts/dev-helpers/audit-faq-json-internal-links.php '--glob=v2/data/misc-faqs/static_events.json'`

## Related

- Event **lead capture** URLs (tablet/mobile) live under `.htaccess` and [`docs/systems/forms/EVENT_ROUTES.md`](../../../systems/forms/EVENT_ROUTES.md); they are separate from this marketing page.
