Conectează un site web la API-ul CMS
API-ul CMS permite site-ului tău să preia și să redea conținut publicat din Profound CMS. Îl poți folosi pentru a alimenta pagini de documentație, pagini de marketing, bloguri, centre de asistență sau orice altă experiență bazată pe conținut.
Integrarea tipică are trei părți:
Pentru a conecta aplicația la CMS, furnizează URL-ul API-ului CMS, ID-ul site-ului și cheia API.
const cmsConfig = {
cmsUrl: 'https://cms.dev.tryprofoun.com',
websiteId: 'your-website-id',
apiKey: process.env.PROFOUND_API_KEY,
};
Folosește variabile de mediu pentru valorile care se schimbă între medii:
NEXT_PUBLIC_CMS_API_URL=https://cms.dev.tryprofound.com
NEXT_PUBLIC_WEBSITE_ID=your-website-id
PROFOUND_API_KEY=your-api-key
Nu expune cheile API private în codul rulat pe client. Cheile API ar trebui folosite pe server, în procesul de build sau în rutele backend.
Conținutul din CMS este organizat pe scheme. De exemplu, proiectul tău poate avea scheme precum post, category, page sau section.
Folosește numele schemei pentru a prelua conținut:
const posts = await cms.schema('post').fetchAll();
Pentru a prelua un singur document după ID:
const post = await cms.schema('post').fetchSingleById('document-id');
Pentru a prelua conținut localizat, solicită versiunea tradusă a schemei:
const frenchPost = await cms
.schema('post')
.translation('fr')
.fetchSingleById('document-id');
Pentru site-urile care folosesc pagini gestionate de CMS, poți prelua conținut în funcție de calea URL curentă.
const route = await cms.route.getByPath({
websiteId: 'your-website-id',
path: '/docs/getting-started',
});
Răspunsul rutei identifică pagina și blocurile de redat. Aplicația ta poate apoi să preia blocurile și să le redea cu propriile componente.
const blocks = await cms.block.getByIds({
websiteId: 'your-website-id',
ids: route.blockIds,
});
async function getDocsPage(path: string) {
const route = await cms.route.getByPath({
websiteId: process.env.WEBSITE_ID,
path,
});
const blocks = await cms.block.getByIds({
websiteId: process.env.WEBSITE_ID,
ids: route.blockIds,
});
return {
title: route.label,
path: route.path,
blocks,
};
}
Poți folosi blocurile returnate pentru a reda pagina folosind sistemul de componente al aplicației tale.
Conținutul publicat în CMS poate fi memorat în siguranță în cache. Pentru majoritatea site-urilor, memorează în cache răspunsurile API pentru o perioadă scurtă și revalidează-le când se schimbă conținutul.
O configurare frecventă este:
const content = await cache(
() => cms.schema('post').fetchAll(),
{
revalidate: 60,
tags: ['cms-posts'],
}
);
Comportament recomandat pentru cache:
Modul de previzualizare le permite editorilor să vadă modificările nepublicate înainte de publicare.
Un pattern des întâlnit este să folosești o rută separată pentru previzualizare, de exemplu:
/docs/getting-started
/cms-preview/docs/getting-started
Paginile din producție ar trebui să preia doar conținut publicat. Paginile de previzualizare pot accepta parametri de previzualizare, precum:
?edit_mode=true
Rutele de previzualizare ar trebui, de obicei, să fie dinamice și să nu fie memorate static în cache.
Conținutul CMS poate fi indisponibil în timpul unui build sau al unei cereri. Aplicația ta ar trebui să gestioneze această situație elegant.
Comportament recomandat:
404 atunci când ruta nu există.async function getPost(id: string) {
try {
return await cms.schema('post').fetchSingleById(id);
} catch (error) {
console.error('Nu s-a reușit preluarea postării CMS', error);
return null;
}
}
Păstrează cheile API private și folosește-le doar pe server. Nu include credențiale private în bundle-urile pentru browser sau în JavaScript public.
Folosește variabile de mediu publice doar pentru valori nesensibile, precum:
Folosește variabile de mediu private pentru:
Folosește API-ul CMS atunci când site-ul tău are nevoie să preia conținut structurat, să redea rute gestionate de CMS sau să susțină fluxurile de lucru de previzualizare pentru editori.
O integrare standard ar trebui să: