Gyakorlati ĂștmutatĂł: kĂ©szĂts nemzetköziesĂtett repĂŒlĆtĂ©r-katalĂłgust a Profound CMS-ben â egy paramĂ©terezett Ăștvonal, amely minden repĂŒlĆtĂ©rhez oldalt renderel, 35 nyelven.
KĂ©szĂts egy valĂłdi, nemzetköziesĂtett repĂŒlĆtĂ©r-katalĂłgust a Profound CMS-ben: egyetlen URL-minta, amely minden repĂŒlĆtĂ©rhez kĂŒlön oldalt renderel, 35 nyelven. Te Ărod a Next.js kĂłdot Ă©s kĂ©zzel Ă©pĂted fel a CMS-struktĂșrĂĄt; a Claude Code (a Profound MCP-n keresztĂŒl) hĂĄrom feladatot vĂ©gez el â lĂ©trehozza a repĂŒlĆtĂ©ri adatokat, beköti a dizĂĄjnrendszert Ă©s legenerĂĄlja a nĂ©gy React komponenst. HĂĄrom rĂ©sz: BeĂĄllĂtĂĄs, FelĂ©pĂtĂ©s, ĂlesĂtĂ©s.
Nézd meg a teljes videós bemutatót.
/{language}/{airport_code}.cms-renderer renderel.curl -fsSL https://bun.sh/install | bashgh), valamint egy GitHubhoz kapcsolt Vercel fiĂłk.language) beĂ©pĂtve Ă©rkeznek.cms-renderer SDK-val rendereli egy olvasĂĄsi szintƱ API-kulccsal.VĂ©gĂĄllapot: kb. 50 repĂŒlĆtĂ©r a CMS-ben, az alkalmazĂĄs összekötve velĂŒk, Ă©s a dizĂĄjnrendszer bekötve.
RegisztrĂĄlj a ProfoundnĂĄl (WorkOS hitelesĂtĂ©s), Ă©s hozz lĂ©tre egy airports nevƱ webhelyet. MĂĄsolj ki kĂ©t dolgot: a webhelyazonosĂtĂłt (a UUID-t az admin URL-jĂ©ben) Ă©s egy olvasĂĄsi szintƱ API-kulcsot a Deployments â Create API key menĂŒpontbĂłl. Az alkalmazĂĄs csak olvas, ezĂ©rt elĂ©g egy olvasĂĄsi kulcs.
bunx create-profound-next airports
cd airports
Add hozzĂĄ a hitelesĂtĆ adataidat a .env.local fĂĄjlhoz:
PROFOUND_API_KEY=<your read key>
NEXT_PUBLIC_PROFOUND_WEBSITE_ID=<your website id>
NEXT_PUBLIC_CMS_API_URL=https://cms.dev.tryprofound.com
NEXT_PUBLIC_BUNNY_CDN_URL=https://cms-profound.b-cdn.net
bun dev futtatĂĄsa utĂĄn nyisd meg a localhost:3000-et, hogy ellenĆrizd a kapcsolatot.
airport komponenstAz adminban menj a Components â Create new component menĂŒpontra, Ă©s nevezd el airport-nak. Adj hozzĂĄ hat mezĆt: code, name, city, country (Text) Ă©s latitude, longitude (Number). Jelöld meg a code mezĆt Route Slug mezĆkĂ©nt, majd ĂĄllĂtsd a stĂĄtuszt Active-ra. Hagyd mindegyik mezĆt opcionĂĄlisnak; ne adj hozzĂĄ UI Element cĂmkĂ©t.
Az airport komponens â hat mezĆ, a code Route SlugkĂ©nt beĂĄllĂtva.
bun run generate-schemas
Ez lĂ©trehozza az airportSchema (Zod) sĂ©mĂĄt Ă©s az Airport tĂpust a generated/cms-schemas.ts fĂĄjlban, Ă©s megerĆsĂti, hogy a hitelesĂtĆ adataid mƱködnek.
Csatlakoztasd az MCP-t Ă©s hitelesĂts:
claude mcp add --transport http Profound http://107.21.107.99:8081/mcp
A szerver OAuth-on (WorkOS) keresztĂŒl hitelesĂt. A Claude Code-ban futtasd a /mcp parancsot, vĂĄlaszd a Profound opciĂłt, Ă©s fejezd be a bejelentkezĂ©st a böngĂ©szĆdben â a Claude Code automatikusan is rĂĄkĂ©rdez, amikor elĆször hĂvsz meg egy Profound eszközt. MiutĂĄn a /mcp connected ĂĄllapotot mutat a ProfoundnĂĄl, Ărd be Claude-nak:
GenerĂĄlj ötven valĂłs repĂŒlĆteret â valĂłs IATA-kĂłdokkal, nevekkel, vĂĄrosokkal, orszĂĄgokkal Ă©s koordinĂĄtĂĄkkal. Mentsd el JSON-kĂ©nt egy
datamappĂĄba, validĂĄld az airport komponensĂŒnk ellen, majd hozd lĂ©tre mindet publikĂĄlt dokumentumkĂ©nt a Profound MCP-n keresztĂŒl, pĂĄrhuzamosan.
Nyisd meg az airport â Variants nĂ©zetet, hogy lĂĄsd a közel 50 publikĂĄlt repĂŒlĆteret. Az alkalmazĂĄs az API-kulccsal olvas, az MCP pedig a sajĂĄt WorkOS munkamenetĂ©vel Ăr.
KörĂŒlbelĂŒl 50 repĂŒlĆtĂ©r, publikĂĄlt vĂĄltozatkĂ©nt feltöltve.
A sablon stĂlus nĂ©lkĂŒl Ă©rkezik. Helyezz el egy DESIGN.md fĂĄjlt (egy Tailwind v4 @theme blokkot plusz tokeneket) a projekt gyökerĂ©be â lehet sajĂĄt, vagy letöltheted a refero.design oldalrĂłl. EzutĂĄn Ărd meg Claude-nak:
Olvasd be a DESIGN.md-t. ĂllĂtsd be a Tailwind v4-et, Ă©s kösd be a tĂ©mĂĄt Ă©s a fontokat. HasznĂĄld a
next/fontmegoldĂĄst a betƱtĂpusokhoz, ne runtime Google importot. Csak a stĂlusra fĂłkuszĂĄlj â mĂ©g nincsenek oldalak vagy komponensek.
EllenĆrizd, hogy a src/app/globals.css tartalmazza az @import "tailwindcss"; sort Ă©s az @theme blokkot, valamint hogy a localhost:3000 megjelenĂti a tokeneket.
ĂpĂtsd fel a renderelĂ©si rĂ©teget: a UI-elemeket, a React komponenseket, az Ăștvonalat, a CEL kötĂ©seket Ă©s a fordĂtĂĄst.
Az adminban hozz lĂ©tre Ășj komponenst nĂ©gyszer (Route Slug nĂ©lkĂŒl). Mindegyikhez add hozzĂĄ a mezĆket Text tĂpussal, hacsak nincs jelezve mĂĄshogy, ĂĄllĂtsd a stĂĄtuszt Active-ra, Ă©s add hozzĂĄ a UI Element cĂmkĂ©t a Settings â Tags menĂŒpontban:
nav â brandheadline â title, subtitlebody â code, city, country, latitude (Number), longitude (Number)footer â textA body.latitude Ă©s body.longitude mezĆk legyenek Number tĂpusĂșak, hogy illeszkedjenek az airport komponenshez.
Minden UI-elem kĂŒlön komponens â itt a body, Active stĂĄtusszal Ă©s UI Element cĂmkĂ©vel.
Mind a négy UI-elem az airport komponens mellett.
bun run generate-schemas
Ărd meg Claude-nak:
KĂ©szĂts nĂ©gy React komponenst â nav, headline, body, footer â a
components/mappĂĄban. Mindegyik egyetlencontentpropot kap, amely acms-renderer/lib/typeskönyvtĂĄrBlockComponentProps<T>tĂpusa, aholTaz elem generĂĄlt tĂpusa, Ă©s a mezĆket acontent-rĆl olvassa. RegisztrĂĄld mind a nĂ©gyet a fogadĂł Ăștvonal registryjĂ©ben komponensnĂ©v szerint. StĂlusold Ćket a dizĂĄjnrendszerĂŒnkkel, de sajĂĄt komponenskĂ©nt â ne mĂĄsold az eredeti oldal elrendezĂ©sĂ©t. Nav: brand bal oldalon. Headline: repĂŒlĆtĂ©r nevecode · city, countryalcĂmmel. Body: adatlapon jelenjen meg a kĂłd, vĂĄros, orszĂĄg Ă©s koordinĂĄtĂĄk. Footer: egy statikus sor. Csak elrendezĂ©s Ă©s stĂlus.
Claude létrehozza a négy komponenst és kitölti a registryt a src/app/[...slug]/page.tsx fåjlban:
const registry = { nav: Nav, headline: Headline, body: Body, footer: Footer };
KĂ©t szabĂĄly: minden komponens a mezĆket a content-rĆl olvassa (nem kĂŒlön propkĂ©nt), Ă©s a registry kulcsainak pontosan egyezniĂŒk kell a CMS-ben lĂ©vĆ komponensnevekkel â ha nem egyeznek, ĂŒresen renderelĆdnek.
Az adminban menj a Pages â Create page oldalra, Ă©s ĂĄllĂtsd be a mintĂĄt /{airport_code}-ra. A Dynamic Segment Mappings rĂ©sznĂ©l rendeld a airport_code szegmenst az airport komponenshez, slug mezĆnek a code-ot megadva. Mentsd el â a Page Builder felĂŒletre kerĂŒlsz. EllenĆrizd, hogy a /JFK elĂ©rhetĆ.
UI-elem hozzĂĄadĂĄsa az oldalhoz a Custom fĂŒlrĆl.
A négy UI-elem hozzåadva a JFK bindinghoz a Page Builderben.
VĂĄlaszd ki a JFK bindingot â Add UI Element â Custom fĂŒl â add hozzĂĄ a nav, headline, body, footer elemeket ebben a sorrendben. A Profound ezt a kĂ©szletet minden repĂŒlĆtĂ©ri bindingra propagĂĄlja.
Töltsd ki a mezĆket. A statikus Ă©rtĂ©keket (nav brand, footer szöveg) közvetlenĂŒl beĂrhatod. A dinamikus Ă©rtĂ©kekhez vĂĄlts dinamikus mĂłdra, Ă©s Ărj CEL-t. A közös lekĂ©rdezĂ©s: documents.get("airport", meta.params.airport_code).
| MezĆ | CEL Ă©rtĂ©k |
|---|---|
headline.title | documents.get("airport", meta.params.airport_code).name |
headline.subtitle | documents.get("airport", meta.params.airport_code).code + " · " + documents.get("airport", meta.params.airport_code).city + ", " + documents.get("airport", meta.params.airport_code).country |
body.code / body.city / body.country | documents.get("airport", meta.params.airport_code).<field> |
body.latitude / body.longitude | documents.get("airport", meta.params.airport_code).latitude (és .longitude) |
nav.brand, footer.text | statikus karakterlĂĄncok |
PublikĂĄld az oldalt (jobb felsĆ sarok).
Nyisd meg a localhost:3000/JFK, majd a /SFO, /LAX Ăștvonalakat â azonos sablon, eltĂ©rĆ repĂŒlĆtĂ©r.
Az elkĂ©szĂŒlt oldal JFK adataival, angol nyelven.
ElĆször fordĂtsd le a komponenseket. Az adminban nyisd meg az egyes komponenseket (bĂĄrmelyiket â nem kell, hogy UI-elem legyen), majd kattints a Translate â Submit gombra. A Profound egyszerre fordĂtja le a tartalmĂĄt mind a 35 nyelvre, beleĂ©rtve a statikus mezĆket is. Ezt tedd meg mielĆtt mĂłdosĂtanĂĄd az Ăștvonalat vagy bĂĄrmilyen CEL-t.
A Translate â Submit egyszerre kĂŒldi be a komponenst mind a 35 nyelvre.
Add hozzĂĄ a nyelvi dimenziĂłt. A Pages alatt vĂĄltoztasd meg a mintĂĄt /{language}/{airport_code} formĂĄra. Adj hozzĂĄ egy Dynamic Segment Mapping bejegyzĂ©st a language szegmenshez â a beĂ©pĂtett language rendszerkomponenshez, slug mezĆnek a code-ot megadva. Mentsd el, Ă©s ellenĆrizd, hogy /en/JFK betöltĆdik.
A {language} szegmens hozzĂĄadĂĄsa az Ăștvonalhoz.
Minden fordĂthatĂł mezĆt irĂĄnyĂts a fordĂtott lekĂ©rĂ©sre. A nemzetköziesĂtett oldalhoz minden nyelvfĂŒggĆ mezĆt â nem csak a fĆcĂmet â ĂĄt kell ĂĄllĂtani a documents.get(...) hĂvĂĄsrĂłl a documents.translated("airport", meta.params.airport_code, meta.params.language) hĂvĂĄsra:
| MezĆ | FordĂtott CEL |
|---|---|
headline.title | documents.translated("airport", meta.params.airport_code, meta.params.language).name |
headline.subtitle | documents.get("airport", meta.params.airport_code).code + " · " + documents.translated("airport", meta.params.airport_code, meta.params.language).city + ", " + documents.translated("airport", meta.params.airport_code, meta.params.language).country |
body.city / body.country | documents.translated("airport", meta.params.airport_code, meta.params.language).city (és .country) |
Hagyd az IATA code mezĆt Ă©s a koordinĂĄtĂĄkat a documents.get hĂvĂĄson â ezek minden nyelven azonosak. A nav.brand Ă©s a footer.text mĂĄr lefedett az 1. lĂ©pĂ©sben lefuttatott fordĂtĂĄssal.
Amint mindhĂĄrom lĂ©pĂ©s kĂ©sz, a /fr/SFO, /de/SFO stb. oldalak teljesen lefordĂtva töltĆdnek be.
Töltsd fel GitHubra:
git init
git add -A
git commit -m "Airport directory"
gh repo create airports --public --source=. --push
ImportĂĄld a projektet a Vercelbe: Add New â Project â importĂĄld az airports repĂłt. Add hozzĂĄ a környezeti vĂĄltozĂłkat â PROFOUND_API_KEY, NEXT_PUBLIC_PROFOUND_WEBSITE_ID, NEXT_PUBLIC_CMS_API_URL, Ă©s opcionĂĄlisan NEXT_PUBLIC_BUNNY_CDN_URL â majd kattints a Deploy gombra. LĂĄtogasd meg a /en/JFK Ă©s /fr/SFO oldalakat. Minden tovĂĄbbi git push Ășjradeployt indĂt.
MindkettĆ a sablonnal Ă©rkezik.
layout.tsx fĂĄjlban lĂ©vĆ <Refresher> frissĂti az Ă©ppen elĆnĂ©zetben lĂ©vĆ oldalt, amikor az adminban szerkesztesz Ă©s mentesz â nincs szĂŒksĂ©g Ășj deployra.?edit_mode=true paramĂ©tert (pl. âŠ/en/JFK?edit_mode=true), hogy megjelenjenek a szerkesztĆ rĂ©tegek. A publikus lĂĄtogatĂłk tovĂĄbbra is a tiszta oldalt lĂĄtjĂĄk.A ?edit_mode=true a szerkesztĆt rĂĄvetĂti az Ă©lĆ oldalra.
Ătven repĂŒlĆtĂ©r, 35 nyelven, Ă©lĆben â egyszer leĂrva Ă©s adatokkal feltöltve: egy Ăștvonal, nĂ©gy React komponens Ă©s nĂ©hĂĄny CEL-kötĂ©s. A CMS tĂĄrolja a tartalmat, a kĂłdod rendereli, a CEL pedig összeköti Ćket.