Saltearse al contenido

getContent

La función getContent obtiene un solo contenido de un proyecto. Esta función es útil para obtener un contenido específico, como un artículo o una entrada de blog.

Ejemplo:

// Usando el cliente que ya hemos creado previamente
const content = await client.getContent({ id: '1' });
console.log(content);

Interfaz

La función getContent acepta como parámetros un objeto ContentQueryParams requerido y devuelve una promesa que se resuelve con el contenido.

export interface ApiClient {
getContent: <Model>(queryParam: ContentQueryParams<Model>) => Promise<Model>;
// ... otros métodos
}

Parámetros

  • queryParam: Un objeto que contiene los parámetros de consulta para filtrar el contenido. Este parámetro es requerido para poder recuperar el contenido filtrado por id o cualquier otro filtro que quieras aplicar.
interface ContentQueryParams {
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)
}
nombredescripción
idEl campo id del contenido a recuperar.
Este parámetro debe ser un string
Ejemplo: client.getContent({ id: '1' })
Puedes encontrar el id del contenido en la pestaña Contenido de tu proyecto.
contentTypeEl modelo del contenido que queremos recuperar.
Por ejemplo: client.getContent({ id: '1', 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.getContent({ id: '1', language: 'es' })
fields.${string}Permite filtrar por valores específicos de campos.
Ejemplos:
client.getContent({ 'fields.slug': 'my-post' } })
client.getContent({ 'fields.title': { in: ['Hello World', 'Hola Mundo'] } })
Recupera contenido 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.getContent({ id: '1', includeRelatedContent: true })
type Filter =
| string
| {
in?: string[];
};
nombredescripción
stringFiltra el contentido donde el parámetro es igual a este valor.
Por ejemplo: client.getContent('1', { contentType: 'post' })
Recupera un contentido cuyo modelo es igual a post
inFiltra el contenido donde el parámetro contiene alguno de estos valores.
Por ejemplo: client.getContent('1', { language: { in: ['es', 'en'] } })
Recupera un contenido filtrando los campos que coincidan con es y/o en

Salida

La función getContent devuelve un objeto que contiene el contenido (filtrado o no). Este objeto representa 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 post = await client.getContent({ id: '1' });
console.log(post);
/*
{
id: '1',
title: 'Hola Mundo',
body: 'Este es el cuerpo del post en markdown.',
order: 1,
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.

getContent 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.