Підключіть вебсайт до 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();
Щоб отримати окремий документ за 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('Не вдалося отримати допис CMS', error);
return null;
}
}
Зберігайте ключі API в таємниці та використовуйте їх лише на сервері. Не додавайте приватні облікові дані до браузерних бандлів або публічного JavaScript.
Публічні змінні середовища використовуйте лише для нечутливих значень, таких як:
Приватні змінні середовища використовуйте для:
Використовуйте API CMS, коли вашому вебсайту потрібно отримувати структурований контент, відображати маршрути під керуванням CMS або підтримувати робочі процеси попереднього перегляду для редакторів.
Стандартна інтеграція має: