oppsett av proxy for adminpanelet
Det er enkelt Ă„ koble adminpanelet til nettstedet ditt
Dette sikrer en sÞmlÞs redigeringsopplevelse. NÄr adminpanelet er koblet til nettstedet ditt via en proxy, kan du redigere nettstedet pÄ samme URL og fÄ en visuell forhÄndsvisning av endringene i sanntid. Det muliggjÞr ogsÄ redigering med overlegg, noe som gir en bedre brukeropplevelse ved redigering av nettsiden.
Proxyen er en proxy.ts-fil i prosjektet ditt (i Next.js 16; i eldre versjoner av Next.js heter den middleware.ts). Den fungerer som en URL-omskriving og videresender nettstedets /admin-, /api- og /auth-endepunkter til CMS-et.
localhost: du mĂ„ bruke en tunnel (siden CMS-et ikke kan fĂ„ direkte tilgang til localhost)// proxy.ts (Next.js 16 â bruk middleware.ts i eldre versjoner av Next.js)
import { createCmsProxy, cmsProxyMatcher } from 'cms-renderer/lib/proxy';
import type { NextRequest } from 'next/server';
const cmsProxy = createCmsProxy({
// CMS-administratorens opprinnelse som proxyen skal videresende til.
upstream: process.env.ADMIN_UPSTREAM_ORIGIN ?? 'https://cms.dev.tryprofound.com',
});
export default async function proxy(request: NextRequest) {
return cmsProxy(request);
}
export const config = {
matcher: cmsProxyMatcher,
};
createCmsProxy returnerer en behandler som du kaller med den innkommende forespĂžrselen. cmsProxyMatcher er den ferdiglagde matcheren som dekker /admin, /api, /auth samt admin-initierte /_next- og forespĂžrsler etter statiske ressurser â slik at du slipper Ă„ skrive matcher-arrayet manuelt.
I eldre versjoner av Next.js gir du filen navnet
middleware.tsog eksporterer behandleren sommiddlewarei stedet for som standardeksport:
export async function middleware(request: NextRequest) { return cmsProxy(request); } export const config = { matcher: cmsProxyMatcher };
Trenger du Ă„ videresende ekstra stier? Send
additionalPaths: ['/my-path']tilcreateCmsProxy.
NÄ kan du gÄ til /admin pÄ nettstedet ditt for Ä fÄ tilgang til adminpanelet. Dette aktiverer forhÄndsvisning i sanntid.
Overlegg og redigeringsmodus gjengis av forhÄndsvisningsruten din, ikke den statiske produksjonsruten. Adminpanelet laster inn nettstedet ditt i redigeringsmodus (?edit_mode=true), og denne forespÞrselen hÄndteres av ParametricRoutePreviewPage pÄ en force-dynamic-rute, som videresender searchParams for deg:
// app/cms-preview_/[...slug]/page.tsx
import { ParametricRoutePreviewPage } from 'cms-renderer/lib/renderer';
import { registry } from '@/lib/registry';
import { cmsConfig } from '@/lib/cms-config';
// Dynamisk gjengivelse â tillater searchParams for edit_mode
export const dynamic = 'force-dynamic';
interface PageProps {
params: Promise<{ slug: string[] }>;
searchParams: Promise<{ [key: string]: string | string[] | undefined }>;
}
export default async function PreviewPage({ params, searchParams }: PageProps) {
const { slug } = await params;
return (
<ParametricRoutePreviewPage
registry={registry}
apiKey={cmsConfig.apiKey}
websiteId={cmsConfig.websiteId}
cmsUrl={cmsConfig.cmsUrl}
params={Promise.resolve({ slug })}
searchParams={searchParams}
/>
);
}
Du trenger ikke Ă„ koble til overlegg manuelt â det eneste som kreves, er Ă„ sende searchParams til forhĂ„ndsvisningsgjengiveren. Produksjonsruten din (`app/[...slug]/page.tsx`) forblir statisk med ParametricRoutePage og trenger ikke searchParams\. Se Setup Hybrid CMS Project for et komplett oppsett med to ruter.
/admin pÄ nettstedet dittOverlegg og forhÄndsvisninger i sanntid skal fungere automatisk.
Sett opp komplette produksjons- og forhÄndsvisningsruter i Setup Hybrid CMS Project.