Sans tĂŞte (Headless)

Vous pouvez utiliser Hyvor Blogs uniquement comme CMS headless - en rédigeant et gérant le contenu dans Hyvor Blogs, tout en affichant le blog vous-même avec votre propre framework (Next.js, SvelteKit, Astro, etc.) ou même une application mobile native.

Cette page présente une vue d'ensemble de l'approche, et non un tutoriel complet étape par étape. Consultez la référence de l'API Data pour la liste complète des points de terminaison, objets et paramètres de requête utilisés ci-dessous.

Pourquoi passer en mode headless ?

  • Vous avez dĂ©jĂ  un frontend (site marketing, application, site de documentation) et vous voulez que les articles de blog y vivent, sur le mĂŞme domaine et avec le mĂŞme système de design.
  • Vous voulez un contrĂ´le total sur le routage, la mise en page et le rendu - au-delĂ  de ce que permettent les thèmes.
  • Vous construisez une application mobile ou un autre client non-web qui a besoin du contenu du blog sous forme de donnĂ©es.

Si vous voulez simplement un blog hébergé avec une apparence personnalisée, écrire un thème personnalisé est généralement plus simple que de passer en mode headless - les thèmes s’exécutent toujours entièrement sur l’infrastructure de Hyvor Blogs (hébergement, mise en cache, balises SEO, redirections) pour vous. Le mode headless a du sens lorsque le blog doit faire partie d’une application existante que vous possédez déjà.

Comment ça fonctionne

  1. Créez un blog sur Hyvor Blogs et rédigez vos articles, tags et auteurs comme d’habitude dans l’éditeur.
  2. Votre application frontend récupère les données du blog au moment de la compilation ou de la requête à l’aide de l’API Data, une API JSON publique en lecture seule.
  3. Votre application affiche ces données dans des pages en utilisant vos propres composants, votre routage et votre style.

Aucune clé API n’est requise pour l’API Data, vous pouvez donc l’appeler directement depuis le navigateur, depuis un serveur, ou au moment de la compilation dans un générateur de site statique.

1. Récupérer une liste d'articles

Utilisez le point de terminaison /posts sur le chemin de base de l’API Data de votre blog (https://blogs.hyvor.com/api/data/v0/{subdomain}) :

const res = await fetch('https://blogs.hyvor.com/api/data/v0/example/posts?limit=10');
const { data: posts, pagination } = await res.json();

// posts[0] -> { id, slug, title, description, published_at, url, tags, authors, ... }

Utilisez le paramètre keys pour éviter de récupérer trop de données - pour une page de liste, vous n’avez généralement pas besoin du HTML complet du champ content :

/posts?keys=id,slug,title,description,published_at,featured_image_url,tags

La pagination, le filtrage et le tri fonctionnent tous de la même manière que partout ailleurs dans l’API Data - voir page, filter et sort.

2. Récupérer un seul article

Utilisez le point de terminaison /post avec soit slug, soit id :

const res = await fetch('https://blogs.hyvor.com/api/data/v0/example/post?slug=hello-world');
const post = await res.json();

// post.content is sanitized HTML, ready to render

Le champ content est du HTML généré par l’éditeur de Hyvor Blogs. Affichez-le directement (par exemple {@html post.content} dans Svelte, ou dangerouslySetInnerHTML dans React) - il est déjà nettoyé (sanitized). Les images, intégrations et autres médias référencés dans le contenu utilisent des URLs absolues, afin qu’ils s’affichent correctement quel que soit l’endroit où vous hébergez votre frontend.

3. Routage

Comme vous n’utilisez pas de thème Hyvor Blogs, vous êtes propriétaire de la structure des URL. Un modèle courant consiste en une route dynamique comme /blog/[slug] dans votre application qui appelle /post?slug=... pour afficher la page, et une route de liste comme /blog qui appelle /posts pour construire un index. Comme Hyvor Blogs ne sert pas ces pages, les fonctionnalités qui dépendent du fait que Hyvor Blogs génère les pages pour vous - comme les redirections automatiques, les routes personnalisées, ou le SEO au niveau du thème - ne s’appliquent pas ; vous êtes responsable des balises SEO, des plans de site et des redirections vous-même dans votre propre application.

4. Récupération au moment de la compilation vs. de la requête

  • Les gĂ©nĂ©rateurs de sites statiques (Astro, Next.js static export, prĂ©rendu SvelteKit) peuvent rĂ©cupĂ©rer tous les articles au moment de la compilation via /posts, gĂ©nĂ©rer une page statique par article, et reconstruire lorsque le contenu change (par exemple via un webhook qui dĂ©clenche un redĂ©ploiement).
  • Les applications rendues cĂ´tĂ© serveur ou cĂ´tĂ© client peuvent appeler l’API Data directement Ă  chaque requĂŞte, puisqu’elle ne nĂ©cessite aucune authentification et que les rĂ©ponses sont du JSON peu coĂ»teux et pouvant ĂŞtre mis en cache.

Utilisez les webhooks pour être averti lorsque des articles sont publiés ou mis à jour, afin de pouvoir invalider un cache ou déclencher une reconstruction plutôt que d'interroger l'API en boucle.

5. Plusieurs langues (optionnel)

Si votre blog utilise plusieurs langues, passez le paramètre language à la fois sur les requêtes de liste et d’article unique pour obtenir la bonne variante, et utilisez le tableau variants de chaque objet pour construire les liens du sélecteur de langue.

Exemple de stack

Une configuration headless minimale ressemble généralement à ceci :

  • Contenu : rĂ©digĂ© et publiĂ© dans Hyvor Blogs comme d’habitude.
  • Frontend : n’importe quel framework, rĂ©cupĂ©rant les donnĂ©es depuis l’API Data.
  • DĂ©ploiement : votre propre hĂ©bergement (Vercel, Netlify, votre propre serveur, etc.) - indĂ©pendant de l’hĂ©bergement de Hyvor Blogs.

À partir de là, la référence de l’API Data contient la liste complète des points de terminaison, objets et paramètres (filtrage, tri, pagination, sélection de champs) dont vous aurez besoin pour construire des pages de liste, des pages de tags/auteurs et une recherche.