ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡ ΠΊ API CMS
API CMS ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΡΠ΅ΠΌΡ Π²Π΅Π±-ΡΠ°ΠΉΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΈΠ· Profound CMS. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΡΠ°Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ΠΎΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡ, Π±Π»ΠΎΠ³ΠΎΠ², ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΡ ΡΠ΅Π½ΡΡΠΎΠ² ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ°, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ΅.
Π’ΠΈΠΏΠΈΡΠ½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ ΡΠ°ΡΡΠ΅ΠΉ:
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊ CMS, ΡΠΊΠ°ΠΆΠΈΡΠ΅ URL API CMS, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠ° ΠΈ ΠΊΠ»ΡΡ API.
const cmsConfig = {
cmsUrl: 'https://cms.dev.tryprofoun.com',
websiteId: 'your-website-id',
apiKey: process.env.PROFOUND_API_KEY,
};
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΠΌΠΈ:
NEXT_PUBLIC_CMS_API_URL=https://cms.dev.tryprofound.com
NEXT_PUBLIC_WEBSITE_ID=your-website-id
PROFOUND_API_KEY=your-api-key
ΠΠ΅ ΡΠ°ΡΠΊΡΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ API Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠΠ»ΡΡΠΈ API ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΌΠ°ΡΡΡΡΡΠ°Ρ Π²Π°ΡΠ΅Π³ΠΎ Π±ΡΠΊΠ΅Π½Π΄Π°.
ΠΠΎΠ½ΡΠ΅Π½Ρ Π² CMS ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎ ΡΡ
Π΅ΠΌΠ°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡ
Π΅ΠΌΡ post, category, page ΠΈΠ»ΠΈ section.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°:
const posts = await cms.schema('post').fetchAll();
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ:
const post = await cms.schema('post').fetchSingleById('document-id');
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, Π·Π°ΠΏΡΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΡ Π΅ΠΌΡ:
const frenchPost = await cms
.schema('post')
.translation('fr')
.fetchSingleById('document-id');
ΠΠ»Ρ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ CMS ΡΡΡΠ°Π½ΠΈΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΡΡΠΈ URL.
const route = await cms.route.getByPath({
websiteId: 'your-website-id',
path: '/docs/getting-started',
});
ΠΡΠ²Π΅Ρ ΠΌΠ°ΡΡΡΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Π±Π»ΠΎΠΊΠΈ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠΈ Π±Π»ΠΎΠΊΠΈ ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΈΡ Π²Π°ΡΠΈΠΌΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ.
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,
};
}
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ CMS ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΠΊΡΡΠΈΡΡΠΉΡΠ΅ ΠΎΡΠ²Π΅ΡΡ API Π½Π° ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²Π°Π»ΠΈΠ΄ΠΈΡΡΠΉΡΠ΅ ΠΈΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°.
Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°:
const content = await cache(
() => cms.schema('post').fetchAll(),
{
revalidate: 60,
tags: ['cms-posts'],
}
);
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΡΡΠ°:
Π Π΅ΠΆΠΈΠΌ ΠΏΡΠ΅Π΄ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°ΠΌ Π²ΠΈΠ΄Π΅ΡΡ Π½Π΅ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄ΠΎ ΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ.
Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΡΡΡ ΠΏΡΠ΅Π΄ΠΏΡΠΎΡΠΌΠΎΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
/docs/getting-started
/cms-preview/docs/getting-started
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ. Π‘ΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠ΅Π΄ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΏΡΠΎΡΠΌΠΎΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
?edit_mode=true
ΠΠ°ΡΡΡΡΡΡ ΠΏΡΠ΅Π΄ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠΎΠ½ΡΠ΅Π½Ρ CMS ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΠ°. ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:
404, ΠΊΠΎΠ³Π΄Π° ΠΌΠ°ΡΡΡΡΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.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;
}
}
Π₯ΡΠ°Π½ΠΈΡΠ΅ ΠΊΠ»ΡΡΠΈ API Π² ΡΠ΅ΠΊΡΠ΅ΡΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΠ΅ Π²ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΠ΅ Π±Π°Π½Π΄Π»Ρ ΠΈΠ»ΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ JavaScript.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½Π΅ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ API CMS, ΠΊΠΎΠ³Π΄Π° Π²Π°ΡΠ΅ΠΌΡ Π²Π΅Π±-ΡΠ°ΠΉΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΌΠ°ΡΡΡΡΡΡ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ CMS, ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ².
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π°: