Introducción
Administra las páginas del sitio web y las pantallas de la aplicación móvil con contenido dinámico.
Más información sobre la interfaz de usuario del módulo https://doc.oneentry.cloud/docs/category/pages
🎯 ¿Qué hace este módulo?
El módulo Pages te permite recuperar y gestionar páginas (para sitios web) o pantallas (para aplicaciones móviles) con todo su contenido: título, contenido HTML/plano, visibilidad y atributos personalizados. Creas páginas en el panel de administración de OneEntry y las recuperas dinámicamente en tu aplicación, por lo que cambiar el contenido en el administrador se hace efectivo sin necesidad de redeplegar.
🚀 Inicio Rápido
Inicializa el módulo desde defineOneEntry:
const { Pages } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Recupera una sola página por su URL (marcador) y lee sus campos:
// 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 mayoría de los métodos de lectura siguen la misma estructura: un identificador (url o id) más un langCode. Consulta la Tabla de Referencia Rápida a continuación para el conjunto completo.
✨ Conceptos Clave
¿Qué es una Página?
Una página es una entidad de contenido que representa:
- Web: Una página en tu sitio web (por ejemplo,
/about,/contact) - Móvil: Una pantalla en tu aplicación (por ejemplo, Pantalla de Perfil, Pantalla de Configuración)
Cada página contiene:
- Contenido - título y contenido HTML/plano a través de
localizeInfos - URL -
pageUrl, el marcador de la página utilizado para el enrutamiento y las búsquedas - Visibilidad - la bandera
isVisible - Atributos personalizados - cualquier campo adicional que definas en
attributeValues(los metadatos SEO se modelan como atributos personalizados, no como un campo incorporado) - Localización - contenido multilingüe
Tipos de Página
OneEntry admite diferentes tipos de página (type), siendo los más comunes:
| Tipo | Valor de type | Ejemplo de Uso |
|---|---|---|
| Página Común | common_page | Acerca de, Contacto, Términos |
| Página de Catálogo | catalog_page | Categorías de catálogo |
| Página Externa | external_page | Enlaces a URLs externas |
| Página de Error | error_page | Página 404 / No Encontrado |
La lista completa de tipos está disponible a través del módulo GeneralTypes.
Jerarquía de Páginas
Las páginas están organizadas en un árbol a través de parentId (las páginas de nivel superior tienen parentId: null):
📁 Company
├─ About Us
├─ Team
└─ Careers
📁 Products
├─ Product Category 1
│ ├─ Product A
│ └─ Product B
└─ Product Category 2
Puedes recuperar páginas raíz con getRootPages() y descender con getChildPagesByParentUrl().
📋 Lo Que Necesitas Saber
Dos Maneras de Identificar Páginas
| Método | Cuándo Usar | Ejemplo |
|---|---|---|
| Por URL | El usuario visita una página específica | getPageByUrl("about") |
| Por ID | Referencias internas | getPageById(123) |
Mejor práctica: el pageUrl es un marcador estable - no es una ruta de Next.js. Pasa el marcador de OneEntry (por ejemplo, "about"), no /en/about.
Estructura de la Página
Cada página tiene estos campos clave:
{
"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
}
Localización
Las páginas admiten múltiples idiomas: solicita un langCode diferente para obtener la misma página en otro idioma.
Atributos Personalizados
Agrega cualquier campo a las páginas utilizando AttributesSets: autor de la publicación del blog/fecha/etiquetas, imágenes de héroe de la página de destino, metadatos SEO, etc. Léelos desde page.attributeValues. Aprende más: Módulo AttributesSets.
Visibilidad
Utiliza la bandera isVisible para controlar qué páginas se muestran a los usuarios: filtra por isVisible: true en producción.
📊 Tabla de Referencia Rápida - Métodos Comunes
| Método | Qué Hace | Cuándo Usar |
|---|---|---|
| getPages() | Obtener todas las páginas | Construir un sitemap, listar todas las páginas |
| getRootPages() | Obtener todas las páginas de nivel superior | Construir navegación de nivel superior |
| getChildPagesByParentUrl() | Obtener páginas secundarias por URL padre | Recorrer el subárbol de una sección |
| getBlocksByPageUrl() | Obtener objetos PositionBlock para una página por URL | Renderizar bloques de contenido de la página |
| getConfigPageByUrl() | Obtener configuraciones para una página por URL | Leer configuraciones de visualización por página |
| getPageById() | Obtener una sola página por ID | Referencias internas |
| getPageByUrl() | Obtener una sola página por URL | Renderizar una página en una ruta |
| searchPage() | Búsqueda rápida de páginas | Buscar páginas por título |
❓ Preguntas Comunes (FAQ)
¿Cuál es la diferencia entre URL e ID?
pageUrl- el marcador de la página utilizado para el enrutamiento (por ejemplo,"about"). Visible para el usuario y estable en todos los entornos.id- el identificador numérico. Utilizado para referencias internas.
¿Cómo construyo la navegación a partir de páginas?
Utiliza getRootPages() para entradas de nivel superior y getChildPagesByParentUrl() para descender por el árbol, o utiliza el módulo Menus dedicado para estructuras de navegación gestionadas.
¿Cómo añado metadatos SEO a una página?
SEO no es un campo incorporado: modela el título/meta descripción/etc. como atributos personalizados en un AttributesSet, luego léelos desde page.attributeValues.
🎓 Mejores Prácticas
- Utiliza
pageUrl(el marcador) para el enrutamiento: nunca codifiques una ruta de marco como la URL. - Filtra por
isVisible: truepara producción. - Almacena en caché las páginas para reducir las llamadas a la API; maneja los 404 (página no encontrada) de manera adecuada.
- Lee datos personalizados desde
attributeValuesen lugar de asumir campos incorporados.
🔗 Documentación Relacionada
- Módulo Products - Gestiona productos de comercio electrónico
- Módulo Blocks - Bloques de contenido reutilizables para páginas
- Módulo AttributesSets - Campos personalizados para páginas
- Módulo Menus - Gestión de menús de navegación
- Módulo GeneralTypes - Tipos de página