Π‘Π²ΡΡΠΆΠ΅ΡΠ΅ ΡΠ΅Π±ΡΠ°ΠΉΡ ΠΊΡΠΌ CMS API
API-ΡΠΎ Π½Π° CMS ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π²Π°ΡΠΈΡ ΡΠ΅Π±ΡΠ°ΠΉΡ Π΄Π° ΠΈΠ·Π²Π»ΠΈΡΠ° ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ ΠΎΡ Profound CMS. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅, Π·Π° Π΄Π° Π·Π°Ρ ΡΠ°Π½Π²Π°ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΈ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ΠΎΠ²ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ, Π±Π»ΠΎΠ³ΠΎΠ²Π΅, ΡΠ΅Π½ΡΡΠΎΠ²Π΅ Π·Π° ΠΏΠΎΠΌΠΎΡ ΠΈΠ»ΠΈ Π²ΡΡΠΊΠΎ Π΄ΡΡΠ³ΠΎ ΠΏΡΠ΅ΠΆΠΈΠ²ΡΠ²Π°Π½Π΅, Π²ΠΎΠ΄Π΅Π½ΠΎ ΠΎΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅.
Π’ΠΈΠΏΠΈΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΈΠΌΠ° ΡΡΠΈ ΡΠ°ΡΡΠΈ:
ΠΠ° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ ΠΊΡΠΌ CMS, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅ΡΠ΅ URL Π°Π΄ΡΠ΅ΡΠ° Π½Π° CMS API, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° ΡΠ΅Π±ΡΠ°ΠΉΡΠ° ΠΈ 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();
ΠΠ° Π΄Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅Π½ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΠΎ ID:
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.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΡΠ°ΠΌΠΎ Π·Π° Π½Π΅ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΠΎ:
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π·Π°:
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ CMS API, ΠΊΠΎΠ³Π°ΡΠΎ Π²Π°ΡΠΈΡΡ ΡΠ΅Π±ΡΠ°ΠΉΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π²Π»ΠΈΡΠ° ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅, Π΄Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΠΌΠ°ΡΡΡΡΡΠΈ, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΈ ΠΎΡ CMS, ΠΈΠ»ΠΈ Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈΡΠ΅.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΡΡΠ±Π²Π° Π΄Π°: