Bir Web Sitesini CMS API'sine Bağlayın
CMS API'si, web sitenizin Profound CMS'den yayımlanmış içeriği almasına ve görüntülemesine olanak tanır. Bunu dokümantasyon sayfalarını, pazarlama sayfalarını, blogları, yardım merkezlerini veya içerik odaklı diğer deneyimleri desteklemek için kullanabilirsiniz.
Tipik entegrasyon üç bölümden oluşur:
Uygulamanızı CMS'ye bağlamak için CMS API URL'nizi, web sitesi kimliğinizi ve API anahtarınızı girin.
const cmsConfig = {
cmsUrl: 'https://cms.dev.tryprofoun.com',
websiteId: 'your-website-id',
apiKey: process.env.PROFOUND_API_KEY,
};
Ortamlar arasında değişen değerler için ortam değişkenlerini kullanın:
NEXT_PUBLIC_CMS_API_URL=https://cms.dev.tryprofound.com
NEXT_PUBLIC_WEBSITE_ID=your-website-id
PROFOUND_API_KEY=your-api-key
Özel API anahtarlarını istemci tarafı kodunda açığa çıkarmayın. API anahtarları sunucunuzda, derleme sürecinizde veya arka uç rotalarınızda kullanılmalıdır.
CMS'deki içerik şemalara göre düzenlenmiştir. Örneğin projenizde post, category, page veya section gibi şemalar bulunabilir.
İçerik almak için şema adını kullanın:
const posts = await cms.schema('post').fetchAll();
Tek bir belgeyi kimliğine göre almak için:
const post = await cms.schema('post').fetchSingleById('document-id');
Yerelleştirilmiş içeriği almak için şemanın çevrilmiş sürümünü isteyin:
const frenchPost = await cms
.schema('post')
.translation('fr')
.fetchSingleById('document-id');
CMS tarafından yönetilen sayfaları kullanan web siteleri için, geçerli URL yoluna göre içerik alabilirsiniz.
const route = await cms.route.getByPath({
websiteId: 'your-website-id',
path: '/docs/getting-started',
});
Rota yanıtı, sayfayı ve oluşturulacak blokları belirler. Ardından uygulamanız blokları alabilir ve kendi bileşenlerinizle oluşturabilir.
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,
};
}
Dönen blokları kullanarak sayfayı uygulamanızın bileşen sistemiyle oluşturabilirsiniz.
Yayımlanmış CMS içeriğini önbelleğe almak güvenlidir. Çoğu web sitesi için API yanıtlarını kısa bir süre önbelleğe alın ve içerik değiştiğinde yeniden doğrulayın.
Yaygın bir kurulum şöyledir:
const content = await cache(
() => cms.schema('post').fetchAll(),
{
revalidate: 60,
tags: ['cms-posts'],
}
);
Önerilen önbellek davranışı:
Önizleme modu, editörlerin yayımlanmadan önce yayımlanmamış değişiklikleri görmesini sağlar.
Yaygın bir model, ayrı bir önizleme rotası kullanmaktır; örneğin:
/docs/getting-started
/cms-preview/docs/getting-started
Canlı sayfalar yalnızca yayımlanmış içeriği almalıdır. Önizleme sayfaları aşağıdakiler gibi önizleme parametrelerini kabul edebilir:
?edit_mode=true
Önizleme rotaları genellikle dinamik olmalı ve statik olarak önbelleğe alınmamalıdır.
Bir derleme veya istek sırasında CMS içeriği kullanılamayabilir. Uygulamanız bu durumu sorunsuzca ele almalıdır.
Önerilen davranış:
404 döndürün.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 anahtarlarını gizli tutun ve yalnızca sunucuda kullanın. Özel kimlik bilgilerini tarayıcı paketlerine veya herkese açık JavaScript'e dahil etmeyin.
Genel ortam değişkenlerini yalnızca aşağıdakiler gibi hassas olmayan değerler için kullanın:
Aşağıdakiler için özel ortam değişkenleri kullanın:
Web sitenizin yapılandırılmış içerik alması, CMS tarafından yönetilen rotaları oluşturması veya editör önizleme iş akışlarını desteklemesi gerektiğinde CMS API'sini kullanın.
Standart bir entegrasyon şunları yapmalıdır: