feat: manage blog detail fallback copy via payload
This commit is contained in:
@@ -35,6 +35,7 @@ const getDetailPage = (value: unknown): BlogDetailCms => {
|
||||
...detail,
|
||||
notFound: { ...blogDetailContent.notFound, ...detail.notFound },
|
||||
heroBackLink: { ...blogDetailContent.heroBackLink, ...detail.heroBackLink },
|
||||
fallbackArticle: { ...blogDetailContent.fallbackArticle, ...detail.fallbackArticle },
|
||||
categoryColors: colorMap(detail.categoryColors),
|
||||
metaCopy: { ...blogDetailContent.meta, ...(detail.metaCopy || detail.meta) },
|
||||
sidebarCta: { ...blogDetailContent.sidebarCta, ...detail.sidebarCta },
|
||||
@@ -48,23 +49,24 @@ export default function BlogDetail() {
|
||||
const route = useCmsRoute();
|
||||
const cmsArticle = route?.collection === 'posts' ? route.doc : undefined;
|
||||
const cmsDetail = getDetailPage(cmsArticle?.detailPage);
|
||||
const fallbackArticle = cmsDetail.fallbackArticle || blogDetailContent.fallbackArticle;
|
||||
const articleFallbackImage = mediaUrl(cmsDetail.fallbackImage, `/images/${blogDetailContent.fallbackImageFilename}`);
|
||||
const article = (slug ? getArticleBySlug(slug) : undefined) || (cmsArticle ? {
|
||||
slug: String(cmsArticle.slug || slug),
|
||||
title: String(cmsArticle.title || 'Presse'),
|
||||
cat: String(cmsArticle.cat || 'Presse'),
|
||||
date: String(cmsArticle.date || 'Aktuell'),
|
||||
author: String(cmsArticle.authorName || 'BMP Redaktion'),
|
||||
authorRole: String(cmsArticle.authorRole || 'Presse'),
|
||||
readTime: String(cmsArticle.readTime || '1 min'),
|
||||
title: String(cmsArticle.title || fallbackArticle.title || blogDetailContent.fallbackArticle.title),
|
||||
cat: String(cmsArticle.cat || fallbackArticle.category || blogDetailContent.fallbackArticle.category),
|
||||
date: String(cmsArticle.date || fallbackArticle.date || blogDetailContent.fallbackArticle.date),
|
||||
author: String(cmsArticle.authorName || fallbackArticle.authorName || blogDetailContent.fallbackArticle.authorName),
|
||||
authorRole: String(cmsArticle.authorRole || fallbackArticle.authorRole || blogDetailContent.fallbackArticle.authorRole),
|
||||
readTime: String(cmsArticle.readTime || fallbackArticle.readTime || blogDetailContent.fallbackArticle.readTime),
|
||||
img: docImageUrl(cmsArticle, articleFallbackImage, 'heroImage'),
|
||||
excerpt: String(cmsArticle.excerpt || cmsArticle.meta?.description || 'Dieser Pressebeitrag wird aus Payload CMS geladen.'),
|
||||
sections: Array.isArray(cmsArticle.sections) && cmsArticle.sections.length > 0 ? cmsArticle.sections as BlogSection[] : [{ body: String(cmsArticle.excerpt || cmsArticle.meta?.description || 'Dieser Pressebeitrag wird aus Payload CMS geladen.') }],
|
||||
excerpt: String(cmsArticle.excerpt || cmsArticle.meta?.description || fallbackArticle.excerpt || blogDetailContent.fallbackArticle.excerpt),
|
||||
sections: Array.isArray(cmsArticle.sections) && cmsArticle.sections.length > 0 ? cmsArticle.sections as BlogSection[] : [{ body: String(cmsArticle.excerpt || cmsArticle.meta?.description || fallbackArticle.excerpt || blogDetailContent.fallbackArticle.excerpt) }],
|
||||
tags: Array.isArray(cmsArticle.tags)
|
||||
? cmsArticle.tags
|
||||
.map((item: { tag?: string }) => item.tag)
|
||||
.filter((tag): tag is string => Boolean(tag))
|
||||
: ['Presse'],
|
||||
: [String(fallbackArticle.tag || blogDetailContent.fallbackArticle.tag)],
|
||||
relatedSlugs: Array.isArray(cmsArticle.relatedSlugs)
|
||||
? cmsArticle.relatedSlugs
|
||||
.map((item: { slug?: string }) => item.slug)
|
||||
|
||||
Reference in New Issue
Block a user