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
Bölüm başlığı “Üç adımlı gömme”Her Wink entegrasyonu, platformdan bağımsız olarak aynı üç adımı izler.
1. Stil sayfasını ekleyin
Bölüm başlığı “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
Bölüm başlığı “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
Bölüm başlığı “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
Bölüm başlığı “Çerçeve örnekleri”Next.js (App Router)
Bölüm başlığı “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
Bölüm başlığı “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
Bölüm başlığı “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
Bölüm başlığı “İç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
Bölüm başlığı “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
Bölüm başlığı “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.