Aller au contenu principal

Introduction

Gérez les pages de votre site web et les écrans de votre application mobile avec du contenu dynamique.

Plus d'informations sur l'interface utilisateur du module https://doc.oneentry.cloud/docs/category/pages


🎯 Que fait ce module ?

Le module Pages vous permet de récupérer et gérer des pages (pour les sites web) ou des écrans (pour les applications mobiles) avec tout leur contenu - titre, contenu HTML/texte brut, visibilité et attributs personnalisés. Vous créez des pages dans le panneau d'administration OneEntry et les récupérez dynamiquement dans votre application, de sorte que les modifications de contenu dans l'administration soient mises en ligne sans redéploiement.

🚀 Démarrage rapide

Initialisez le module à partir de defineOneEntry :


const { Pages } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);

Récupérez une seule page par son URL (marqueur) et lisez ses champs :

// Fetch the "about" page in English.
const page = await Pages.getPageByUrl("about", "en_US");

console.log(page.id, page.localizeInfos.title);
console.log("Visible:", page.isVisible);

// Custom fields you defined live in attributeValues.
console.log(page.attributeValues);

La plupart des méthodes de lecture suivent la même structure : un identifiant (url ou id) plus un langCode. Consultez le tableau de référence rapide ci-dessous pour l'ensemble complet.

✨ Concepts clés

Qu'est-ce qu'une page ?

Une page est une entité de contenu qui représente :

  • Web : Une page sur votre site web (par exemple, /about, /contact)
  • Mobile : Un écran dans votre application (par exemple, Écran de profil, Écran des paramètres)

Chaque page contient :

  • Contenu - titre et contenu HTML/texte brut via localizeInfos
  • URL - pageUrl, le marqueur de la page utilisé pour le routage et les recherches
  • Visibilité - le drapeau isVisible
  • Attributs personnalisés - tous les champs supplémentaires que vous définissez dans attributeValues (les métadonnées SEO sont modélisées comme des attributs personnalisés, pas comme un champ intégré)
  • Localisation - contenu multilingue

Types de pages

OneEntry prend en charge différents types de pages (type), les plus courants étant :

Typevaleur typeUtilisation Exemple
Page communecommon_pageÀ propos, Contact, Conditions
Page de cataloguecatalog_pageCatégories de catalogue
Page externeexternal_pageLiens vers des URL externes
Page d'erreurerror_pagePage 404 / Non trouvé

La liste complète des types est disponible via le module GeneralTypes.

Hiérarchie des pages

Les pages sont organisées dans un arbre via parentId (les pages de niveau supérieur ont parentId: null) :

📁 Company
├─ About Us
├─ Team
└─ Careers

📁 Products
├─ Product Category 1
│ ├─ Product A
│ └─ Product B
└─ Product Category 2

Vous pouvez récupérer les pages racines avec getRootPages() et descendre avec getChildPagesByParentUrl().

📋 Ce que vous devez savoir

Deux façons d'identifier les pages

MéthodeQuand l'utiliserExemple
Par URLL'utilisateur visite une page spécifiquegetPageByUrl("about")
Par IDRéférences internesgetPageById(123)

Meilleure pratique : le pageUrl est un marqueur stable - ce n'est pas un chemin de route Next.js. Passez le marqueur OneEntry (par exemple, "about"), pas /en/about.

Structure de la page

Chaque page a ces champs clés :

{
"id": 9,
"parentId": 8,
"pageUrl": "blog1",
"depth": 1,
"localizeInfos": {
"title": "Blog 1",
"menuTitle": "Blog 1",
"htmlContent": "",
"plainContent": ""
},
"isVisible": true,
"blocks": [],
"type": "common_page",
"templateIdentifier": null,
"attributeSetIdentifier": null,
"attributeValues": {},
"isSync": false
}

Localisation

Les pages prennent en charge plusieurs langues - demandez un langCode différent pour obtenir la même page dans une autre langue.

Attributs personnalisés

Ajoutez des champs à des pages en utilisant AttributesSets - auteur/date/étiquettes de l'article de blog, images héro de la page d'atterrissage, métadonnées SEO, etc. Lisez-les à partir de page.attributeValues. En savoir plus : Module AttributesSets.

Visibilité

Utilisez le drapeau isVisible pour contrôler quelles pages sont affichées aux utilisateurs - filtrez pour isVisible: true en production.


📊 Tableau de référence rapide - Méthodes courantes

MéthodeCe qu'elle faitQuand l'utiliser
getPages()Récupérer toutes les pagesConstruire un plan du site, lister toutes les pages
getRootPages()Récupérer toutes les pages de niveau supérieurConstruire la navigation de niveau supérieur
getChildPagesByParentUrl()Récupérer les pages enfants par URL parentParcourir l'arbre d'une section
getBlocksByPageUrl()Récupérer des objets PositionBlock pour une page par URLRendre les blocs de contenu de la page
getConfigPageByUrl()Récupérer les paramètres pour une page par URLLire les paramètres d'affichage par page
getPageById()Récupérer une seule page par IDRéférences internes
getPageByUrl()Récupérer une seule page par URLRendre une page sur une route
searchPage()Recherche rapide de pagesRechercher des pages par titre

❓ Questions fréquentes (FAQ)

Quelle est la différence entre l'URL et l'ID ?

  • pageUrl - le marqueur de la page utilisé pour le routage (par exemple, "about"). Visible par l'utilisateur et stable à travers les environnements.
  • id - l'identifiant numérique. Utilisé pour les références internes.

Comment construire la navigation à partir des pages ?

Utilisez getRootPages() pour les entrées de niveau supérieur et getChildPagesByParentUrl() pour descendre dans l'arbre, ou utilisez le module Menus dédié pour des structures de navigation gérées.


Comment ajouter des métadonnées SEO à une page ?

Le SEO n'est pas un champ intégré - modélisez le titre/meta description/etc. comme des attributs personnalisés dans un AttributesSet, puis lisez-les à partir de page.attributeValues.


🎓 Meilleures pratiques

  • Utilisez pageUrl (le marqueur) pour le routage - ne jamais coder en dur un chemin de route de framework comme URL.
  • Filtrez par isVisible: true pour la production.
  • Mettez en cache les pages pour réduire les appels API ; gérez les 404 (page non trouvée) de manière élégante.
  • Lisez les données personnalisées à partir de attributeValues plutôt que de supposer des champs intégrés.

🔗 Documentation connexe