Przewodnik tworzenia bloków
Twórz własne bloki dla swojej headless strony cmssy - defineBlock, fields, komponent bloku i context.
Anatomia bloku
Blok cmssy żyje w Twoim repozytorium Next.js jako folder w blocks/:
- block.ts — deklaruje blok przez
defineBlock+fields(typ, etykieta i edytowalna schema) - src/index.tsx — komponent React renderujący treść
Zarejestruj blok w cmssy/blocks.ts. Edytor czyta schema każdego bloku przez most SDK, więc dodanie bloku do strony renderuje formularz edycji z Twoich fields.
Zdefiniuj blok
import type { ComponentType } from "react";
import { defineBlock, fields } from "@cmssy/react";
import Component from "./src";
export const heroBlock = defineBlock({
type: "hero",
label: "Hero",
component: Component as unknown as ComponentType<{ content: Record<string, unknown> }>,
props: {
heading: fields.singleLine({ label: "Heading", defaultValue: "Welcome" }),
body: fields.richText({ label: "Body" }),
ctaUrl: fields.link({ label: "CTA URL", defaultValue: "/signup" }),
showCta: fields.boolean({ label: "Show CTA", defaultValue: true }),
},
});
Typy pól: singleLine, multiLine, richText, numeric, date, media, link, select, multiselect, boolean, color, repeater. Zobacz Schema i typy pól.
Komponent bloku
Bloki otrzymują { content, context }. Treść jest już rozwiązana dla aktywnego języka, więc czytaj pola bezpośrednio.
import type { CmssyBlockContext } from "@cmssy/react";
export default function Hero({ content, context }: {
content: Record<string, unknown>;
context?: CmssyBlockContext;
}) {
const locale = context?.locale.current ?? "en";
const isPreview = context?.isPreview ?? false;
return <section><h1>{String(content.heading ?? "")}</h1></section>;
}
context to { locale: { current, default, enabled }, isPreview }. UI zależne od języka czyta context.locale.enabled. Auth i definicje formularzy nie są w context w headless — pobierz je przez createCmssyClient.
Zarejestruj i wdróż
// cmssy/blocks.ts
import { heroBlock } from "@/blocks/hero/block";
export const blocks = [heroBlock];
Uruchom pnpm dev, otwórz edytor strony, a Twój blok pojawi się w wyborze bloków. Wdróż aplikację Next.js, aby opublikować — nie ma osobnego kroku budowania czy publikowania bloku.
Następne kroki
- Schema i typy pól — wszystkie typy pól, repeatery, pola warunkowe, grupy
- Zaawansowane funkcje — bloki layoutu, stylowanie, pobieranie danych