Saltar al contenido principal

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 soporta diferentes tipos de página (type), siendo los más comunes:

TipoValor de typeEjemplo de Uso
Página Comúncommon_pageAcerca de, Contacto, Términos
Página de Catálogocatalog_pageCategorías de catálogo
Página Externaexternal_pageEnlaces a URLs externas
Página de Errorerror_pagePágina 404 / No Encontrada

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étodoCuándo UsarEjemplo
Por URLEl usuario visita una página específicagetPageByUrl("about")
Por IDReferencias internasgetPageById(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
}

Configuración de Visualización

Las páginas de catálogo llevan sus configuraciones de salida en la propia entidad de la página, en el campo opcional config (Record<string, number>) - por ejemplo rowsPerPage y productsPerRow:

const page = await Pages.getPageByUrl("catalog");

const rows = page.config?.rowsPerPage;
const perRow = page.config?.productsPerRow;

⚠️ Migración: el método separado getConfigPageByUrl() fue eliminado - la API eliminó el endpoint GET /api/content/pages/{url}/config y ahora responde con 404. El tipo IPageConfig ha desaparecido con él. Lee los mismos valores desde page.config, que ya devuelve cada método de página.

Localización

Las páginas soportan 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 usando 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

Usa 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étodoQué HaceCuándo Usar
getPages()Obtener todas las páginasConstruir sitemap, listar todas las páginas
getRootPages()Obtener todas las páginas de nivel superiorConstruir navegación de nivel superior
getChildPagesByParentUrl()Obtener páginas hijas por URL padreRecorrer el subárbol de una sección
getBlocksByPageUrl()Obtener objetos PositionBlock para una página por URLRenderizar bloques de contenido de la página
getPageById()Obtener una sola página por IDReferencias internas
getPageByUrl()Obtener una sola página por URLRenderizar una página en una ruta
searchPage()Búsqueda rápida de páginasBuscar páginas por título
getPagesByVectorSearch()Búsqueda semántica (vector) de páginasCoincidir páginas por significado, no por palabras clave

❓ 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. Usado para referencias internas.

¿Cómo construyo la navegación a partir de páginas?

Usa getRootPages() para entradas de nivel superior y getChildPagesByParentUrl() para descender por el árbol, o usa el módulo Menus dedicado para estructuras de navegación gestionadas.


¿Cómo agrego 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

  • Usa pageUrl (el marcador) para el enrutamiento - nunca codifiques una ruta de marco como la URL.
  • Filtra por isVisible: true para 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 attributeValues en lugar de asumir campos incorporados.

🔗 Documentación Relacionada