searchPage
Busca páginas por título.
Descripción
Busca páginas por el texto de name y se resuelve en un array de objetos IPagesEntity, o en [] si no hay coincidencias. Con traficLimit: true en la configuración de defineOneEntry, se resuelve en tarjetas breves IPageSearchResult.
La búsqueda se hace en langCode. Los resultados conservan el orden de la búsqueda; una página que coincide pero no se puede cargar en ese idioma se omite.
La coincidencia es una búsqueda de subcadena en el título que no distingue mayúsculas de minúsculas. url limita el resultado a la página con ese pageUrl exacto; no busca dentro de una sección.
Lo que obtienes depende de traficLimit
El tipo de retorno declarado es IPagesEntity[] | IPageSearchResult[] | IError:
| Configuración | Resultado | Contiene |
|---|---|---|
traficLimit: false (predeterminado) | IPagesEntity[] | Entidades de página completas, con attributeValues, localizeInfos, … |
traficLimit: true | IPageSearchResult[] | La tarjeta en bruto de la búsqueda rápida: solo { id, title } |
Las tarjetas breves no tienen attributeValues, y la llamada también puede resolverse en un IError, así que acota el tipo del resultado antes de leerlo:
const found = await Pages.searchPage('cat');
if (!Array.isArray(found)) {
// IError: the request failed
} else if (found.length === 0) {
// nothing matched
} else if ('attributeValues' in found[0]) {
// IPagesEntity[]: traficLimit is off
} else {
// IPageSearchResult[]: short { id, title } cards
}
Las tarjetas breves no tienen templateIdentifier, así que el SDK no busca una plantilla para ellas.
.searchPage(
,
,
);
Esquema de parámetros
Esquema
name(requerido): string
Texto que se busca en los títulos de las páginas (localizeInfos.title) en el idioma solicitado.
ejemplo: "Sobre nosotros"
url: string
URL de la página.
ejemplo: "catalogo"
langCode: cadena
Código de idioma. Predeterminado: el langCode pasado a defineOneEntry ("en_US" si no se pasó ninguno).
ejemplo: "en_US"
Ejemplos
Ejemplo mínimo
const response = await Pages.searchPage('cat');
Ejemplo con langCode
El segundo argumento es url; pasa undefined para omitirlo:
const response = await Pages.searchPage('cat', undefined, 'en_US');
Ejemplo de respuesta
[
{
"id": 10,
"parentId": null,
"pageUrl": "catalog",
"depth": 0,
"localizeInfos": {
"title": "Catalog",
"htmlContent": "",
"plainContent": "",
"menuTitle": "Catalog"
},
"isVisible": true,
"blocks": [
"product_block",
"test",
"freq_ordered"
],
"type": "catalog_page",
"templateIdentifier": "template",
"attributeSetIdentifier": "page",
"attributeValues": {
"text": {
"type": "string",
"value": "catalog text",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"number": {
"type": "integer",
"value": 10,
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"real": {
"type": "real",
"value": 5,
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": false
},
"float": {
"type": "float",
"value": 15,
"isIcon": false,
"position": 3,
"additionalFields": {},
"isProductPreview": false
}
},
"moduleFormConfigs": [],
"isSync": true,
"template": {
"id": 4,
"attributeSetIdentifier": null,
"title": "Template",
"generalTypeId": 4,
"identifier": "template",
"version": 0,
"generalTypeName": "catalog_page",
"attributeValues": {},
"position": 1
}
}
]
Esquema de respuesta
Esquema: IPagesEntity[] | IPageSearchResult[]
id: número
ID del objeto.
ejemplo: 8
parentId: número | null
ID de la página padre; null para una página de nivel superior.
ejemplo: 10
pageUrl: cadena
URL de la página.
ejemplo: "blog"
depth: número
Nivel de anidamiento de la página: 0 para una página de nivel superior, 1 para sus hijas, y así sucesivamente.
ejemplo: 10
localizeInfos: ILocalizeInfo
Contenido localizado de la página: title, menuTitle, htmlContent y plainContent.
ejemplo:
{
"title": "Blog",
"menuTitle": "Blog",
"htmlContent": "",
"plainContent": ""
}
isVisible: booleano
Indica si la página es visible.
ejemplo: true
type: PageType
Tipo de página.
ejemplo: "pagina_comun"
templateIdentifier: cadena | null
Marcador de la plantilla vinculada.
ejemplo: "template"
attributeSetIdentifier: cadena | null
Marcador del conjunto de atributos, o null si no hay ninguno asignado.
ejemplo: "pagina"
attributeValues: IAttributeValues
Valores de atributos indexados por marcador; un objeto vacío si no hay ninguno.
ejemplo:
{
"text": {
"type": "string",
"value": "some text",
"position": 0,
"additionalFields": {}
}
}
isSync: booleano
Si el índice de atributos de la página está actualizado para el idioma solicitado.
ejemplo: true
template: objeto
Plantilla vinculada a la página.
ejemplo:
{}
position: número
Posición usada para ordenar.
ejemplo: 2
config: Record<string, number>
Configuraciones de salida para páginas de catálogo.
ejemplo:
{
"rowsPerPage": 1,
"productsPerRow": 1
}
products: número
Número de productos vinculados a la página.
ejemplo: 0
childrenCount: número
Número de páginas hijas.
ejemplo: 1
blocks: IBlockEntity[] | string[]
Bloques vinculados a la página: objetos de bloque o sus marcadores.
ejemplo:
[
"product_block"
]
blocks.attributeValues: IAttributeValues
Valores de atributos indexados por marcador; un objeto vacío si no hay ninguno.
ejemplo:
{
"block-text": {
"type": "string",
"value": "some text",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
}
}
blocks.id: número
ID del bloque.
ejemplo: 1234
blocks.localizeInfos: ILocalizeInfo
Datos localizados del bloque.
ejemplo:
{
"title": "Example title"
}
blocks.version: número
Número de versión del bloque.
ejemplo: 1
blocks.identifier: cadena
Marcador del bloque.
ejemplo: "bloque1"
blocks.type: BlockType
Tipo del bloque.
ejemplo: "producto"
blocks.position: número
Posición del bloque, usada para ordenar.
ejemplo: 1
blocks.templateIdentifier: cadena | null
Marcador de la plantilla que usa el bloque, o null.
ejemplo: "template1"
blocks.isVisible: booleano
Indica si el bloque es visible.
ejemplo: true
blocks.countElementsPerRow: número
Número de elementos por fila en el bloque, si está definido.
ejemplo: 3
blocks.quantity: número
Cantidad de ítems en el bloque, si es aplicable.
ejemplo: 5
blocks.similarProducts: IProductsResponse
Productos similares del bloque, como total e items.
ejemplo:
{
"total": 10,
"items": []
}
blocks.products: IProductsEntity[]
Productos vinculados al bloque.
ejemplo:
[
{
"id": 1,
"name": "Product 1"
},
{
"id": 2,
"name": "Product 2"
}
]
moduleFormConfigs: Array<IFormConfig>
Configuraciones de formulario del módulo vinculado a la página.
rating: IRating
Datos de valoración: valor medio, me gusta y no me gusta, y el método de cálculo.
total: cadena
La Content API no lo devuelve; usa products para obtener el número de productos vinculados.
ejemplo: "10"
categoryPath: cadena | null
Ruta de categoría; null para páginas anidadas que no tienen ruta de categoría propia.
ejemplo: "catalogo"
distance: número
Distancia coseno a la consulta. El endpoint de búsqueda semántica (vectorial) la devuelve en cada elemento.
ejemplo: 0.12