Innehållshantering
Ett headless CMS med collections, entries, locales och releases. Hantera innehåll från panelen Content eller via SDK:t.
Proyecta har ett komplett headless CMS. Det är schemabaserat: du definierar collections (strukturerade innehållstyper) och skapar sedan entries som följer varje collections fält. Entries kan lokaliseras och grupperas i releases.
Panelen Content
Section titled “Panelen Content”Innehåll kan hanteras via SDK:t eller genom att fråga AI:n. Content API har sex resurstyper:
| Flik / Resurs | Vad den används till |
|---|---|
| Collections | Definiera och hantera innehållsscheman (t.ex. “Blog Post”, “FAQ”, “Product Spec”) |
| Fields | Typade fält inom en collection (hanteras som en underresurs till Collections) |
| Entries | Bläddra bland, skapa, redigera, publicera och ta bort entries inom en collection |
| Locales | Lägg till och hantera språk- och regionlocales för översatt innehåll |
| Releases | Gruppera entries som ska publiceras (eller avpubliceras) samtidigt; publicera manuellt via releases.publish() |
| Assets | Ladda upp och hantera mediefiler (bilder, videor, PDF:er) som kan refereras från entries |
Klicka på en collection i fliken Collections för att hoppa till dess entries. Fliken Entries låter dig skapa, redigera, publicera och ta bort enskilda innehållsobjekt.
Du kan också hantera allt programmatiskt via SDK:t (proyecta.content).
Begrepp
Section titled “Begrepp”| Begrepp | Vad det är |
|---|---|
| Collection | Ett schema — formen på en innehållstyp (t.ex. “Blog Post”, “FAQ”, “Product Spec”) |
| Field | Ett typat fält i en collection (t.ex. title: string, body: rich_text, coverImage: asset) |
| Entry | En enskild instans av en collection (ett blogginlägg, ett FAQ-objekt) |
| Asset | En uppladdad mediefil som kan refereras från entries |
| Locale | Ett språk eller en region som innehållet översätts till |
| Release | En grupp entries som schemaläggs att publiceras (eller avpubliceras) samtidigt |
Snabbstart
Section titled “Snabbstart”import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY });
// 1. Define a collectionconst blog = await proyecta.content.collections.create({ api_id: 'blogPost', name: 'Blog Post', // fields are added via collections.fields.create()});
// 2. Create an entryconst post = await proyecta.content.entries.create({ collection_id: blog.id, data: { title: 'Hello, world', body: 'My very first post.', },});
// 3. Publish itawait proyecta.content.entries.publish({ entryId: post.id });Collections
Section titled “Collections”// Browse collectionsfor await (const collection of proyecta.content.collections.list()) { console.log(collection.name);}
// Add or remove fields on a collectionawait proyecta.content.collections.fields.create(blog.id, { /* field definition */});await proyecta.content.collections.fields.delete(blog.id, fieldId);Entries
Section titled “Entries”Entries är de faktiska innehållsraderna. Varje entry tillhör en collection och innehåller data som matchar collectionens fält.
// Browse entries (pass the collection's api_id, not its numeric id)for await (const entry of proyecta.content.entries.list({ collection: 'blogPost' })) { console.log(entry);}
// Update an entryawait proyecta.content.entries.update(post.id, { data: { title: 'Updated title' } });
// Publish an entryawait proyecta.content.entries.publish({ entryId: post.id });
// Delete an entryawait proyecta.content.entries.delete(post.id);Assets
Section titled “Assets”Uppladdning av assets är en förstklassig funktion — använd dem för att bifoga bilder, videor eller PDF:er till dina entries:
// Browse assetsfor await (const asset of proyecta.content.assets.list()) { console.log(asset);}
// Upload, update, or delete via assets.create / assets.update / assets.deleteFör chattdrivna filuppladdningar (dra-och-släpp i Builder), se Filer och media.
Lokalisering
Section titled “Lokalisering”Innehåll kan översättas till flera locales. Varje locale är en post som hanteras via proyecta.content.locales:
await proyecta.content.locales.create({ /* code, name, etc. */});
for await (const locale of proyecta.content.locales.list()) { console.log(locale);}När du hämtar entries kan du begära översättningen för en specifik locale. Se Internationalisering för en bredare bild av i18n.
Releases
Section titled “Releases”En release är ett paket med entries som publiceras (eller avpubliceras) samtidigt. Det låter dig förbereda en samordnad innehållslansering — en marknadsföringskampanj, en ny produktsida, en FAQ-uppdatering — och låta allt slå igenom atomärt.
Obs: Automatisk tidsstyrd publicering är ännu inte implementerat. Releases med ett
scheduled_at-datum får statusenscheduledmen måste publiceras manuellt viareleases.publish(). Automatisk publicering vid den angivna tidpunkten är på väg.
// Create a release (optionally with a target date)const release = await proyecta.content.releases.create({ name: 'Monday launch', scheduled_at: '2024-01-08T09:00:00Z',});
// Manually publish a release when readyawait proyecta.content.releases.publish({ releaseId: release.id });
// Browse releasesfor await (const r of proyecta.content.releases.list()) { console.log(r);}För att ändra en releases schema tar du bort den och skapar den på nytt — det finns inget endpoint för uppdatering.
Vanliga mönster (låt AI:n sätta ihop det)
Section titled “Vanliga mönster (låt AI:n sätta ihop det)”"Build a blog using the Proyecta Content API. Collection 'Blog Post' with fields: title, slug, excerpt, body (rich text), coverImage (asset), author. Public route at /blog and /blog/[slug].""Create an FAQ collection in Proyecta Content. Build an admin page where I can add/edit FAQs and a public /faq page.""Set up a multi-language landing page using Proyecta Content with English and Spanish locales.""Create a release containing three blog posts and publish it manually when ready."
När ska du använda Content jämfört med Database
Section titled “När ska du använda Content jämfört med Database”| Användningsfall | Använd detta |
|---|---|
| Redaktionellt innehåll (inlägg, FAQs, marknadsföringstext) — behöver publicerings-/utkastlägen, schemaläggning, lokalisering | Content API |
| Appdata (användare, beställningar, orderrader) — behöver frågeprestanda, transaktioner, realtid | Database |
| Statiska resurser i kod | Katalogen public/ i ditt projekt |
| Filer uppladdade av användare | Filer och media |
Kommer snart
Section titled “Kommer snart”- Rich-text-redigerare för entries — fullständig WYSIWYG-redigering för
rich_text-fält i panelen Content - Liveförhandsgranskning av innehållsändringar mot din app
- Innehållsroller — separata redaktörsbehörigheter från utvecklarbehörigheter