Μετάβαση στο περιεχόμενο

Headless CMS

Τα web components του Wink είναι ανεξάρτητα από πλαίσια προγραμματισμού προσαρμοσμένα στοιχεία HTML. Εάν το headless CMS σας αποδίδει HTML — είτε μέσω Next.js, Nuxt, Astro, SvelteKit ή οποιουδήποτε άλλου πλαισίου — μπορείτε να ενσωματώσετε τα στοιχεία Wink χωρίς καμία ειδική ενσωμάτωση.

Κάθε ενσωμάτωση Wink, ανεξαρτήτως πλατφόρμας, ακολουθεί τα ίδια τρία βήματα.

Προσθέστε αυτό στο <head> του εγγράφου σας (ή στο αντίστοιχο παγκόσμιο layout):

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

Προσθέστε αυτό πριν από το κλείσιμο της ετικέτας </body> (ή στην ενότητα script του layout σας):

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

Τοποθετήστε αυτό μία φορά ανά σελίδα, οπουδήποτε στο σώμα (συνήθως στο footer του παγκόσμιου layout σας):

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

Στα πλούσια κείμενα ή στους προσαρμοσμένους τύπους πεδίων του CMS σας, ενσωματώστε απευθείας τις ετικέτες των στοιχείων στο HTML που παράγεται:

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

Για πλατφόρμες headless όπως Contentful, Strapi, Sanity ή παρόμοιες, χρησιμοποιήστε ένα πεδίο Rich Text ή ένα Custom Block που αποδίδει ακατέργαστο HTML και επικολλήστε εκεί την ετικέτα του στοιχείου.

Για έργα TypeScript, το πακέτο @wink/elements παρέχει:

  • Μια συνάρτηση load() που εισάγει προγραμματιστικά τα σκριπτ του CDN
  • Πλήρεις δηλώσεις τύπων TypeScript για όλα τα χαρακτηριστικά των στοιχείων
Terminal window
npm install @wink/elements
import { load } from '@wink/elements';
// Κλήση μία φορά κατά την εκκίνηση της εφαρμογής
load({ clientId: 'YOUR_CLIENT_ID' });
ΣτοιχείοΕτικέτα HTMLΣκοπός
Content loader<wink-content-loader>Εμφάνιση καρτών ξενοδοχείων, πλεγμάτων, χαρτών
Lookup<wink-lookup>Μπάρα αναζήτησης προορισμών
Search button<wink-search-button>Άνοιγμα επιλογέα δρομολογίου
Account button<wink-account-button>Σύνδεση / μενού χρήστη
Itinerary button<wink-itinerary-button>Εμφάνιση τρέχοντος δρομολογίου
Itinerary picker<wink-itinerary-picker>Πλήρης φόρμα δρομολογίου
Shopping cart<wink-shopping-cart-button>Κουμπί σύνοψης καλαθιού

Δείτε τα Web Components για την πλήρη αναφορά χαρακτηριστικών.