Skip to content

Headless CMS

Wink interneto komponentai yra nepriklausomi nuo karkaso ir yra pritaikyti kaip HTML elementai. Jei jūsų headless CMS generuoja HTML — nesvarbu, ar tai būtų Next.js, Nuxt, Astro, SvelteKit ar kitas karkasas — galite įterpti Wink komponentus be jokios specialios integracijos.

Kiekviena Wink integracija, nepriklausomai nuo platformos, vykdoma trimis tais pačiais žingsniais.

Pridėkite tai į dokumento <head> (arba atitinkamą globalų išdėstymą):

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

Pridėkite tai prieš uždarantįjį </body> žymeklį (arba savo išdėstymo skripto dalyje):

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

Įdėkite tai vieną kartą kiekviename puslapyje, bet kurioje kūno dalyje (dažniausiai globalaus išdėstymo apačioje):

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

Jūsų CMS turtingo teksto arba pasirinktinių laukų tipuose įterpkite komponentų žymes tiesiogiai į HTML išvestį:

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

Contentful, Strapi, Sanity ar panašioms headless platformoms naudokite Rich Text lauką arba Custom Block, kuris atvaizduoja žalią HTML, ir ten įklijuokite komponento žymę.

TypeScript projektams, @wink/elements paketas suteikia:

  • load() funkciją, kuri programiškai įkelia CDN skriptus
  • Pilnas TypeScript tipų deklaracijas visiems komponentų atributams
Terminal window
npm install @wink/elements
import { load } from '@wink/elements';
// Iškvieskite vieną kartą programos paleidimo metu
load({ clientId: 'YOUR_CLIENT_ID' });
KomponentasHTML žymaPaskirtis
Turinio įkroviklis<wink-content-loader>Rodo viešbučių korteles, tinklus, žemėlapius
Paieškos laukelis<wink-lookup>Paieškos juosta kryptims
Paieškos mygtukas<wink-search-button>Atidaro maršruto pasirinkimą
Paskyros mygtukas<wink-account-button>Prisijungimo / vartotojo meniu
Maršruto mygtukas<wink-itinerary-button>Rodo esamą maršrutą
Maršruto pasirinkėjas<wink-itinerary-picker>Pilna maršruto forma
Prekių krepšelio mygtukas<wink-shopping-cart-button>Krepšelio santraukos mygtukas

Pilną atributų sąrašą žr. Web Components.