Anslut en webbplats till CMS-API:t
CMS-API:t gör att din webbplats kan hÀmta och rendera publicerat innehÄll frÄn Profound CMS. Du kan anvÀnda det för att driva dokumentationssidor, marknadssidor, bloggar, hjÀlpcenter eller andra innehÄllsdrivna upplevelser.
Den typiska integrationen bestÄr av tre delar:
För att ansluta din applikation till CMS:et anger du din CMS API-URL, webbplats-ID och API-nyckel.
const cmsConfig = {
cmsUrl: 'https://cms.dev.tryprofoun.com',
websiteId: 'your-website-id',
apiKey: process.env.PROFOUND_API_KEY,
};
AnvÀnd miljövariabler för vÀrden som skiljer sig mellan miljöer:
NEXT_PUBLIC_CMS_API_URL=https://cms.dev.tryprofound.com
NEXT_PUBLIC_WEBSITE_ID=your-website-id
PROFOUND_API_KEY=your-api-key
Exponera inte privata API-nycklar i klientkod. API-nycklar ska anvÀndas pÄ din server, i din byggprocess eller i dina backend-rutter.
InnehÄllet i CMS:et Àr organiserat efter scheman. Till exempel kan ditt projekt ha scheman som post, category, page eller section.
AnvÀnd schemats namn för att hÀmta innehÄll:
const posts = await cms.schema('post').fetchAll();
För att hÀmta ett enskilt dokument via ID:
const post = await cms.schema('post').fetchSingleById('document-id');
För att hÀmta lokalt anpassat innehÄll begÀr du den översatta versionen av schemat:
const frenchPost = await cms
.schema('post')
.translation('fr')
.fetchSingleById('document-id');
För webbplatser som anvÀnder CMS-hanterade sidor kan du hÀmta innehÄll baserat pÄ den aktuella URL-sökvÀgen.
const route = await cms.route.getByPath({
websiteId: 'your-website-id',
path: '/docs/getting-started',
});
Svaret frÄn rutten identifierar sidan och blocken som ska renderas. Din applikation kan sedan hÀmta blocken och rendera dem med dina egna komponenter.
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,
};
}
Du kan anvÀnda de returnerade blocken för att rendera sidan med din applikations komponentsystem.
Publicerat CMS-innehÄll Àr sÀkert att cachelagra. För de flesta webbplatser bör du cachelagra API-svar under en kort period och revalidera dem nÀr innehÄllet Àndras.
En vanlig uppsÀttning Àr:
const content = await cache(
() => cms.schema('post').fetchAll(),
{
revalidate: 60,
tags: ['cms-posts'],
}
);
Rekommenderat cachebeteende:
FörhandsgranskningslÀget lÄter redaktörer se opublicerade Àndringar innan de publiceras.
Ett vanligt mönster Àr att anvÀnda en separat förhandsgranskningsrutt, till exempel:
/docs/getting-started
/cms-preview/docs/getting-started
Produktionssidor bör endast hÀmta publicerat innehÄll. Förhandsgranskningssidor kan ta emot parametrar för förhandsgranskning, till exempel:
?edit_mode=true
Förhandsgranskningsrutter bör vanligtvis vara dynamiska och bör inte cachelagras statiskt.
CMS-innehÄll kan vara otillgÀngligt under en byggprocess eller begÀran. Din applikation bör hantera detta pÄ ett smidigt sÀtt.
Rekommenderat beteende:
404 nÀr en rutt inte finns.async function getPost(id: string) {
try {
return await cms.schema('post').fetchSingleById(id);
} catch (error) {
console.error('Failed to fetch CMS post', error);
return null;
}
}
HÄll API-nycklar privata och anvÀnd dem endast pÄ servern. Inkludera inte privata autentiseringsuppgifter i webblÀsarpaket eller offentlig JavaScript.
AnvÀnd offentliga miljövariabler endast för icke-kÀnsliga vÀrden sÄsom:
AnvÀnd privata miljövariabler för:
AnvÀnd CMS-API:t nÀr din webbplats behöver hÀmta strukturerat innehÄll, rendera CMS-hanterade rutter eller stödja redaktörers förhandsgranskningsarbetsflöden.
En standardintegration bör: