Tovább a tartalomhoz

Headless CMS

A Wink webkomponensek keretrendszerfüggetlen egyedi HTML elemek. Ha a headless CMS-ed HTML-t renderel — akár Next.js, Nuxt, Astro, SvelteKit vagy bármely más keretrendszeren keresztül — beágyazhatod a Wink komponenseket különösebb integráció nélkül.

Minden Wink integráció, platformtól függetlenül, ugyanazt a három lépést követi.

Add hozzá ezt a dokumentumod <head> részéhez (vagy az egyenértékű globális elrendezéshez):

<link rel="stylesheet" href="https://elements.wink.travel/styles.css">

Add hozzá ezt a záró </body> tag előtt (vagy az elrendezésed script szekciójában):

<script src="https://elements.wink.travel/elements.js" type="module" defer></script>

Helyezd el ezt oldalanként egyszer, bárhol a body-ban (általában a globális elrendezés láblécében):

<wink-app-loader client-id="YOUR_CLIENT_ID"></wink-app-loader>
app/layout.tsx
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<head>
<link rel="stylesheet" href="https://elements.wink.travel/styles.css" />
</head>
<body>
{children}
<script src="https://elements.wink.travel/elements.js" type="module" defer />
<wink-app-loader client-id="YOUR_CLIENT_ID" />
</body>
</html>
);
}
layouts/default.vue
<template>
<div>
<slot />
<wink-app-loader client-id="YOUR_CLIENT_ID" />
</div>
</template>
<script setup>
useHead({
link: [{ rel: 'stylesheet', href: 'https://elements.wink.travel/styles.css' }],
script: [{ src: 'https://elements.wink.travel/elements.js', type: 'module', defer: true }],
})
</script>
src/layouts/Layout.astro
<html lang="en">
<head>
<link rel="stylesheet" href="https://elements.wink.travel/styles.css" />
</head>
<body>
<slot />
<script src="https://elements.wink.travel/elements.js" type="module" is:inline></script>
<wink-app-loader client-id="YOUR_CLIENT_ID"></wink-app-loader>
</body>
</html>
src/routes/+layout.svelte
<svelte:head>
<link rel="stylesheet" href="https://elements.wink.travel/styles.css" />
</svelte:head>
<slot />
<wink-app-loader client-id="YOUR_CLIENT_ID" />
<script>
import { onMount } from 'svelte';
onMount(async () => {
await import('https://elements.wink.travel/elements.js');
});
</script>

A CMS-ed gazdag szöveg vagy egyedi mező típusain belül ágyazd be a komponens tageket közvetlenül a HTML kimenetbe:

<wink-content-loader
layout="HOTEL"
id="YOUR_LAYOUT_ID"
></wink-content-loader>

Contentful, Strapi, Sanity vagy hasonló headless platformok esetén használj Rich Text mezőt vagy Custom Block-ot, amely nyers HTML-t renderel, és illeszd be oda a komponens taget.

TypeScript projektekhez a @wink/elements csomag biztosítja:

  • Egy load() függvényt, amely programozottan injektálja a CDN szkripteket
  • Teljes TypeScript típusdefiníciókat az összes komponens attribútumhoz
Terminál
npm install @wink/elements
import { load } from '@wink/elements';
// Egyszer hívd meg az alkalmazás indításakor
load({ clientId: 'YOUR_CLIENT_ID' });
KomponensHTML tagCél
Tartalom betöltő<wink-content-loader>Szállodakártyák, rácsok, térképek megjelenítése
Kereső<wink-lookup>Úticél kereső sáv
Kereső gomb<wink-search-button>Útvonalválasztó megnyitása
Fiók gomb<wink-account-button>Bejelentkezés / felhasználói menü
Útvonal gomb<wink-itinerary-button>Aktuális útvonal megjelenítése
Útvonal választó<wink-itinerary-picker>Teljes útvonal űrlap
Bevásárlókosár<wink-shopping-cart-button>Kosár összefoglaló gomb

A teljes attribútum referenciáért lásd a Web Components oldalt.