feat: manage preistraeger fallback media via payload

This commit is contained in:
syntaxbullet
2026-06-22 12:40:37 +02:00
parent 79a9075f3a
commit 4a751317b0
10 changed files with 82 additions and 18 deletions

View File

@@ -17,6 +17,7 @@ const GRAY = '#666666';
const BG_ALT = '#E4E2E3';
type PreistraegerDetailCms = Partial<typeof preistraegerDetailContent> & {
fallbackImage?: unknown
sideImage?: Partial<typeof preistraegerDetailContent.sideImage> & { image?: unknown }
}
@@ -26,6 +27,11 @@ export default function PreistraegerDetail() {
const { slug } = useParams<{ slug: string }>();
const route = useCmsRoute();
const cmsWinner = route?.collection === 'preistraeger' ? route.doc : undefined;
const cmsDetail = {
...preistraegerDetailContent,
...((cmsWinner?.detailPage || {}) as PreistraegerDetailCms),
} as PreistraegerDetailCms;
const winnerFallbackImage = mediaUrl(cmsDetail.fallbackImage, `/images/${preistraegerDetailContent.fallbackImageFilename}`);
const winner = cmsWinner ? {
id: String(cmsWinner.id),
slug: String(cmsWinner.slug || slug),
@@ -33,7 +39,7 @@ export default function PreistraegerDetail() {
category: String(cmsWinner.category || 'Preisträger'),
year: Number(cmsWinner.year || new Date().getFullYear()),
type: String(cmsWinner.awardType || 'Auszeichnung'),
img: docImageUrl(cmsWinner, '/images/gala-saal-overview.jpg'),
img: docImageUrl(cmsWinner, winnerFallbackImage),
shortDesc: String(cmsWinner.shortDesc || cmsWinner.description || cmsWinner.meta?.description || ''),
longDesc: String(cmsWinner.longDesc || cmsWinner.description || cmsWinner.meta?.description || 'Dieser Preisträger wird aus Payload CMS geladen.'),
quote: String(cmsWinner.quote || 'Diese Erfolgsgeschichte wird aktuell in Payload CMS gepflegt.'),
@@ -47,10 +53,7 @@ export default function PreistraegerDetail() {
} : WINNERS.find(w => w.slug === slug);
const isMobile = useIsMobile();
const detail = {
...preistraegerDetailContent,
...((winner && 'detailPage' in winner ? winner.detailPage : {}) || {}),
} as PreistraegerDetailCms;
const detail = (winner && 'detailPage' in winner ? { ...preistraegerDetailContent, ...(winner.detailPage || {}) } : cmsDetail) as PreistraegerDetailCms;
const breadcrumb = { ...preistraegerDetailContent.breadcrumb, ...(detail.breadcrumb || {}) };
const sections = { ...preistraegerDetailContent.sections, ...(detail.sections || {}) };
const sideImage = { ...preistraegerDetailContent.sideImage, ...(detail.sideImage || {}) };