Saltearse al contenido

getContentList

La función getContentList obtiene una lista de contenidos de un proyecto.

Esta función es útil para obtener todos los contenidos o se puede filtrar por un modelo específico. Por ejemplo, si tienes un modelo llamado post, puedes usar esta función para obtener todos los contenidos de ese modelo.

Ejemplo:

// Usando el cliente que ya hemos creado previamente
const postList = await client.getContentList({ contentType: 'post' });
console.log(postList);

Interfaz

La función getContentList acepta de forma opcional un objeto de ContentListQueryParams como parámetro y devuelve una promesa que se resuelve con una lista de contenidos.

export interface ApiClient {
getContentList: <Model>(queryParam?: ContentListQueryParams<Model>) => Promise<Model[]>;
// ... otros métodos
}

Parámetros

  • queryParam: Un objeto que contiene los parámetros de consulta para filtrar la lista de contenidos. Este parámetro es opcional y si no se proporciona, se devolverá una lista de todos los contenidos del proyecto.
interface ContentListQueryParams {
id?: Filter;
contentType?: Filter;
language?: Filter;
`fields.${string}`?: Filter; // Permite filtrar por valores específicos de campos
// Por ejemplo: 'fields.slug': 'my-post'
includeRelatedContent?: boolean; // Indica si se debe incluir contenido relacionado en la respuesta (solo relaciones de primer nivel)
pagination?: {
take?: number; // Número de elementos a recuperar
skip?: number; // Número de elementos a omitir
};
sorting?: {
contentType?: 'asc' | 'desc'; // Ordenar por modelo de contenido en orden ascendente o descendente
lastUpdate?: 'asc' | 'desc'; // Ordenar por fecha de última actualización
`fields.${string}`?: 'asc' | 'desc'; // Ordenar por valores específicos de campos
};
}
nombredescripción
idEl campo id del contenido a recuperar. Este filtro es útil cuando se quiere recuperar una lista de contenidos pero se conoce los ids de éstos.
Por ejemplo: client.getContentList({ id: { in: ['1', '2', '3']})
contentTypeEl modelo del contenido que queremos recuperar.
Por ejemplo: client.getContentList({ contentType: 'post' });
languageEl idioma del contenido que queremos recuperar.
Cuando aplicamos este filtro, solamente devolverá los campos del modelo en el idioma seleccionado y descartará los demás.
Por ejemplo: client.getContentList({ language: 'es' });
fields.${string}Permite filtrar por valores específicos de campos.
Ejemplos:
client.getContentList({ 'fields.slug': 'my-post' } })
client.getContentList({ 'fields.title': { in: ['Hello World', 'Hola Mundo'] } })
Recupera contenidos con campos que coincidan con los valores especificados.
includeRelatedContentUn booleano que indica si se debe incluir contenido relacionado en la respuesta. Esto es útil cuando se quiere obtener contenido junto con sus elementos relacionados (solo relaciones de primer nivel).
Por ejemplo: client.getContentList({ includeRelatedContent: true })
paginationUn objeto que permite paginar los resultados.
take: Número de elementos a recuperar.
skip: Número de elementos a omitir.
Por ejemplo: client.getContentList({ pagination: { take: 10, skip: 20 } }) recupera 10 elementos omitiendo los primeros 20.
sortingUn objeto que permite ordenar los resultados.
contentType: Ordenar por modelo de contenido en orden ascendente o descendente.
lastUpdate: Ordenar por fecha de última actualización.
fields.${string}: Ordenar por valores específicos de campos.
Por ejemplo: client.getContentList({ sorting: { 'fields.title': 'asc' } }) ordena por el campo title en orden ascendente.
type Filter =
| string
| {
in?: string[];
// A futuro se añadirán más filtros
};
nombredescripción
stringFiltra el contentido donde el parámetro es igual a este valor.
Por ejemplo: client.getContentList({ contentType: 'post' })
Recupera una lista de contenidos cuyo modelo es igual a post
inFiltra el contenido donde el parámetro contiene alguno de estos valores.
Por ejemplo: client.getContentList({ language: { in: ['es', 'en'] } })
Recupera una lista de contenidos filtrando los campos que coincidan con es y/o en

Salida

La función getContentList devuelve una lista de contenidos (filtrados o no). Esta lista es un array de objetos que representan los valores del contenido que los usuarios definen en su proyecto en Content Island.

Ejemplo:

import { createClient } from '@content-island/api-client';
// ... código de inicialización del cliente
// Tu modelo Post definido en Content Island
interface Post {
id: string; // Id del contenido
title: string; // Campo definido en el modelo
body: string; // Campo definido en el modelo
order: number; // Campo definido en el modelo
language: 'es' | 'en'; // o cualquier otro idioma que tengas definido en tu proyecto
}
const postList = await client.getContentList<Post>({ contentType: 'post' });
console.log(postList);
/*
[
{
id: '1',
title: 'Hola Mundo',
body: 'Este es el cuerpo del post en markdown.',
order: 1,
language: 'es',
},
{
id: '2',
title: 'Segundo Post',
body: 'Este es el segundo post en markdown.',
order: 2,
language: 'es',
}
]
*/

Puedes ver que el contenido ya está mapeado a su modelo correspondiente y puedes acceder a los campos directamente sin tener que hacer un mapeo manual.

getContentList utiliza la función mapContentToModel por debajo para mapear el contenido a su modelo, visita esa sección para más información sobre cómo funciona el mapeo de contenido.