Headless CMS
Wink web bileşenleri, çerçeveden bağımsız özel HTML öğeleridir. Headless CMS’niz HTML render ediyorsa — ister Next.js, Nuxt, Astro, SvelteKit veya başka bir çerçeve aracılığıyla olsun — Wink bileşenlerini özel bir entegrasyon olmadan gömebilirsiniz.
Üç adımlı gömme
Section titled “Üç adımlı gömme”Her Wink entegrasyonu, platformdan bağımsız olarak aynı üç adımı izler.
1. Stil sayfasını ekleyin
Section titled “1. Stil sayfasını ekleyin”Bunu belge <head> bölümüne (veya eşdeğer global düzeninize) ekleyin:
<link rel="stylesheet" href="https://elements.wink.travel/styles.css">2. JavaScript’i ekleyin
Section titled “2. JavaScript’i ekleyin”Bunu kapanış </body> etiketinden önce (veya düzeninizin script bölümünde) ekleyin:
<script src="https://elements.wink.travel/elements.js" type="module" defer></script>3. Uygulama yükleyicisini ekleyin
Section titled “3. Uygulama yükleyicisini ekleyin”Bunu sayfa başına bir kez, gövdenin herhangi bir yerine (genellikle global düzeninizin altbilgisinde) yerleştirin:
<wink-app-loader client-id="YOUR_CLIENT_ID"></wink-app-loader>Çerçeve örnekleri
Section titled “Çerçeve örnekleri”Next.js (App Router)
Section titled “Next.js (App Router)”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> );}Nuxt 3
Section titled “Nuxt 3”<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><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>SvelteKit
Section titled “SvelteKit”<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>İçerikte bileşen yerleştirme
Section titled “İçerikte bileşen yerleştirme”CMS’nizin zengin metin veya özel alan türlerinde, bileşen etiketlerini doğrudan HTML çıktısına gömün:
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID"></wink-content-loader>Contentful, Strapi, Sanity veya benzeri headless platformlar için, ham HTML render eden bir Rich Text alanı veya Custom Block kullanın ve bileşen etiketini oraya yapıştırın.
npm paketi
Section titled “npm paketi”TypeScript projeleri için, @wink/elements paketi şunları sağlar:
- CDN scriptlerini programlı olarak enjekte eden bir
load()fonksiyonu - Tüm bileşen öznitelikleri için tam TypeScript tür bildirimleri
npm install @wink/elementsimport { load } from '@wink/elements';
// Uygulama başlangıcında bir kez çağırınload({ clientId: 'YOUR_CLIENT_ID' });Mevcut bileşenler
Section titled “Mevcut bileşenler”| Bileşen | HTML etiketi | Amaç |
|---|---|---|
| İçerik yükleyici | <wink-content-loader> | Otel kartları, ızgaralar, haritalar gösterir |
| Arama | <wink-lookup> | Destinasyonlar için arama çubuğu |
| Arama düğmesi | <wink-search-button> | Seyahat planlayıcıyı açar |
| Hesap düğmesi | <wink-account-button> | Giriş / kullanıcı menüsü |
| Seyahat düğmesi | <wink-itinerary-button> | Mevcut seyahat planını gösterir |
| Seyahat seçici | <wink-itinerary-picker> | Tam seyahat formu |
| Alışveriş sepeti | <wink-shopping-cart-button> | Sepet özeti düğmesi |
Tam öznitelik referansı için Web Components sayfasına bakın.