Siirry sisältöön

Headless CMS

Wink-verkkokomponentit ovat kehysriippumattomia mukautettuja HTML-elementtejä. Jos headless CMS:si renderöi HTML:ää — olipa kyseessä Next.js, Nuxt, Astro, SvelteKit tai jokin muu kehys — voit upottaa Wink-komponentit ilman erityistä integraatiota.

Jokainen Wink-integraatio, alustasta riippumatta, noudattaa samoja kolmea vaihetta.

Lisää tämä dokumenttisi <head>-osaan (tai vastaavaan globaaliin asetteluun):

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

Lisää tämä ennen sulkevaa </body>-tägiä (tai asettelusi skriptiosioon):

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

Aseta tämä kerran per sivu, mihin tahansa bodyyn (yleensä globaalin asettelun alatunnisteeseen):

<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>

Komponenttien sijoittaminen sisältöön

Osio nimeltä “Komponenttien sijoittaminen sisältöön”

CMS:si rikasteksti- tai mukautetuissa kenttätyypeissä upota komponenttien tunnisteet suoraan HTML-tulosteeseen:

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

Contentfulille, Strapille, Sanitylle tai vastaaville headless-alustoille käytä Rich Text -kenttää tai Custom Block -lohkoa, joka renderöi raakaa HTML:ää, ja liitä komponenttitunniste sinne.

TypeScript-projekteihin @wink/elements -paketti tarjoaa:

  • load()-funktion, joka lisää CDN-skriptit ohjelmallisesti
  • Täydelliset TypeScript-tyyppimääritykset kaikille komponenttien attribuuteille
Terminal window
npm install @wink/elements
import { load } from '@wink/elements';
// Kutsu kerran sovelluksen käynnistyessä
load({ clientId: 'YOUR_CLIENT_ID' });
KomponenttiHTML-tunnisteTarkoitus
Sisällön lataaja<wink-content-loader>Näytä hotellikortit, ruudukot, kartat
Hakutoiminto<wink-lookup>Hakupalkki kohteille
Hakupainike<wink-search-button>Avaa matkasuunnitelman valitsin
Tilipainike<wink-account-button>Kirjaudu sisään / käyttäjävalikko
Matkasuunnitelmapainike<wink-itinerary-button>Näytä nykyinen matkasuunnitelma
Matkasuunnitelman valitsin<wink-itinerary-picker>Täysi matkasuunnitelmalomake
Ostoskori<wink-shopping-cart-button>Ostoskorin yhteenvetopainike

Katso Web Components täydellinen attribuuttiviite.