Métadonnées
Helpers bas niveau de génération de métadonnées Next.js, titre, objet Metadata, directives robots.
Helpers de composition de métadonnées Next.js pour les pages qui n'ont pas de contenu SEO stocké : pages d'admin, pages techniques, pages d'un module sans champ seo.
Pour un contenu CMS qui porte un objet seo en base, utiliser @lrvo/core/seo, qui s'appuie sur generateRobots d'ici.
Import
import { generateTitle, generateMetadata, generateRobots } from '@lrvo/core/shared/metadata';Sous-chemin neutre : rien n'y importe de code Node. En pratique il s'utilise côté serveur, dans un export const metadata ou un generateMetadata de page, et le nom d'application vient de getAppName(), qui lit LRVO_NAME : appelé depuis le navigateur, il retomberait sur LRVO.
API
generateTitle(title, options?)
Compose le titre de page avec le nom de l'application.
generateTitle('Commandes');
// 'Commandes - Mon site'
generateTitle('Commandes', { separator: ' — ' });
// 'Commandes — Mon site'
generateTitle('Commandes', { includeAppName: false });
// 'Commandes'| Option | Défaut | Rôle |
|---|---|---|
includeAppName | true | Ajoute le nom de l'application. |
separator | ' - ' | Séparateur. |
appName | getAppName() | Nom explicite, sinon celui de la configuration. |
generateMetadata(params?, options?)
Construit un objet Metadata Next.js. Le titre est passé par generateTitle, et openGraph comme twitter héritent du titre et de la description quand ils ne les définissent pas.
export const metadata = generateMetadata({
title: 'Commandes',
description: 'Suivi des commandes.',
openGraph: { type: 'website' },
});| Paramètre | Rôle |
|---|---|
title | Titre de page. |
description | Description. |
openGraph | Bloc Open Graph. Titre et description hérités si absents. |
twitter | Bloc Twitter. Même héritage. |
| Autres clés | Recopiées telles quelles dans l'objet retourné. |
Les clés absentes ne sont pas émises : une description vide ne produit pas de balise vide.
generateRobots(options?)
Construit le bloc robots.
generateRobots({ index: false, follow: true });
// { index: false, follow: true }
generateRobots({ noarchive: true });
// { index: true, follow: true, noarchive: true }| Option | Défaut | Effet |
|---|---|---|
index | true | Autorise l'indexation. |
follow | true | Autorise le suivi des liens. |
noarchive | false | Interdit l'archivage. Émis seulement si vrai. |
nocache | false | Interdit la mise en cache. Émis seulement si vrai. |
noarchive et nocache ne sont ajoutés que lorsqu'ils sont activés, pour ne pas émettre de directive neutre.
Notes
Ne pas mélanger les deux voies. Une page de contenu CMS passe par buildSeoMetadata, qui gère les tokens, le canonical et les URL absolues. Utiliser generateMetadata d'ici sur un contenu qui a un objet seo reviendrait à ignorer ce que l'utilisateur a saisi dans l'éditeur.
Pour le <title> d'une page d'admin enregistrée, utiliser registerPageMeta plutôt que d'exporter un metadata : le shell d'admin le résout au premier rendu serveur.