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 QueryParams como parámetro y devuelve una promesa que se resuelve con una lista de contenidos.

export interface ApiClient {
getContentList: <Model>(queryParam?: QueryParams<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 QueryParams {
id?: Filter;
contentType?: Filter;
language?: Filter;
'fields.${string}'?: Filter; // Permite filtrar por valores específicos de campos
// Por ejemplo: 'fields.slug': 'my-post'
}
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.
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.