内容管理
Proyecta 的 CMS 是您应用的主要数据层——不仅限于博客文章和营销文案,而是您整个应用所依赖的真实数据记录。集合在 UI 存在之前即完成配置并填充真实样本内容,因此您的应用从第一次构建起就与可编辑的数据紧密相连。
大多数 Proyecta 应用将数据存储在内置 CMS 中。当您描述您的应用时,Proyecta 会设计数据模型、创建所需的集合,并填充真实的样本内容——这一切都发生在任何页面构建之前。您的页面随后通过 AI 为您生成的类型化 hooks 读取这些真实的、可由所有者编辑的内容。要了解这一切如何融为一体的全局视角,请参阅**您的应用数据的工作原理**。
您无需为这些操心就可以开始——一切都是自动发生的。本页面解释其底层机制,以便您能够对其进行调整。
内容被组织为集合和单例:
| 类型 | 含义 | 示例 |
|---|---|---|
| 集合(Collection) | 拥有多个条目的内容类型——一套 schema,多行数据。 | posts, services, testimonials, catalogItems |
| 单例(Singleton) | 只有一个条目的内容类型——全局性、唯一性的内容。 | businessInfo, seoSettings |
集合是一种_结构_;每个条目是该结构的一个实例(一篇博客文章、一项服务、一条 FAQ)。单例持有一条可编辑的记录——您的企业标识,或某个页面的 hero/section 文案。
支持哪些类型的内容
Section titled “支持哪些类型的内容”Proyecta 内置了现成的集合设计——包含合理的字段、管理提示和初始内容——涵盖真实企业常见的记录类型:博客文章与资讯、服务项目、产品目录、餐饮菜单、客户评价与评论、团队成员、图片画廊、FAQ、活动、地点、可下载资源、招聘职位、课程、旅游线路和住宿列表等。
您无需从菜单中挑选。当您描述应用时,Proyecta 会根据您的描述——业务类型、所需功能、使用语言——自动选择合适的集合并创建它们,并预填充真实的样本内容。如果您的应用需要的内容不在上述范围内,Proyecta 会设计一个拥有自定义字段的自定义集合。
正因如此,您的管理面板展示的是您应用自己的集合——而非固定列表。 它根据您应用的实时内容模型自动构建,无论 Proyecta 为您创建了什么——内置的还是自定义的——都会原原本本地呈现供您查看和编辑。两个 Proyecta 应用拥有相同集合组合的情况极为罕见,这正是设计初衷。
每个集合由类型化的字段构成。字段类型在整个链路中强制生效——管理面板渲染对应的编辑器,您的页面获得正确类型的值。
| 字段类型 | 适用场景 |
|---|---|
string |
短单行内容——标题、名称、地址。 |
text |
一段纯文本。 |
markdown |
长篇富文本——文章正文、“关于我们”文案。 |
slug |
URL 标识符,自动从另一个字段派生(例如标题)。 |
number |
数量、评分、时长。 |
money |
价格或货币金额——以货币形式显示和编辑。 |
boolean |
开/关标志。 |
date |
日历日期。 |
datetime |
时间戳——发布日期、活动开始时间。 |
weeklyHours |
一周各天的营业时间。 |
asset |
图片、视频或 PDF(以公开 URL 形式存储)。 |
reference |
指向另一个集合中某条目的链接。 |
enum |
来自固定选项列表的值。 |
array |
字符串列表——标签、电话号码、区域。 |
blocks |
可堆叠的内容块——由类型化段落构成的页面。 |
json |
不适合上述任何类型的结构化数据。 |
条目、草稿与发布
Section titled “条目、草稿与发布”条目是集合中的一个项目。每个条目都有状态:
- 草稿(Draft) — 进行中的内容;不会在您的正式网站上显示。
- 已发布(Published) — 已上线,对访客可见。
- 已归档(Archived) — 已停用,保留但不展示。
您的公开页面只会看到已发布的条目——草稿和已归档的条目会自动隐藏,让您可以安全地提前准备内容,直到正式上线。
管理内容(无需编写代码)
Section titled “管理内容(无需编写代码)”有两种方式可以添加和编辑内容——均无需接触代码:
- 在对话中向 AI 提问。 只需描述您想做的更改,AI 会为您编辑对应内容:
"添加一条 María González 的客户评价:'镇上最好的服务',5 星。""将 Business Info 中的 tagline 改为 'Café de especialidad en la Roma'。""将最后五条联系表单提交标记为已读。"
- 您应用的管理面板。 每个已发布的应用都有一个内置的、需登录才能访问的**管理面板,您(以及您授权的员工)可以在其中直接管理内容和表单提交——每个集合有一个类似电子表格的编辑器,以及提交消息收件箱。它根据您应用的实时内容模型自动配置,新集合会自动出现在此处。请参阅管理面板**。
通过您应用的管理面板或 AI 管理 CMS 内容——builder 内置的内容编辑器已在路线图中(参见即将推出)。用于实时更新应用的实时记录浏览器即将推出。
您的应用如何读取内容
Section titled “您的应用如何读取内容”您的页面通过 @/hooks/useContent 中的一组类型化 hooks 读取内容——AI 会为您编写这些连接代码。您描述页面,Proyecta 生成调用这些 hooks 来访问真实集合的组件。您很少需要亲自接触它们,但以下是它们的功能:
| Hook | 功能说明 |
|---|---|
useCollection('posts') |
列出一个集合中已发布的条目(支持可选的过滤/排序/限制)。 |
useEntry('posts', slug) |
通过 slug 获取一条已发布的条目(详情页)。 |
useSingleton('businessInfo') |
读取单例(企业信息、页面内容)。 |
useFormSubmit('contactForm') |
提交表单并报告验证错误。 |
// A blog index — exactly the kind of code the AI generates for youimport { useCollection } from '@/hooks/useContent';
function BlogList() { const { data: posts, isLoading } = useCollection('posts', { sort: 'published_at:desc' }); if (isLoading) return <Spinner />; return posts?.map((post) => <PostCard key={post._id} post={post} />);}当 Proyecta 为您的集合生成类型化接口时,hooks 将完全具备类型(useCollection<Post>('posts')),您的编辑器将自动补全每个字段。数据读取会在首次绘制时从缓存快照 hydrate——页面即时渲染且对 SEO 友好,随后在后台实时刷新。
表单是平台的一等能力,而非由 AI 手动构建的东西。添加一个表单块,它会渲染字段、验证输入、提交并显示成功状态:
<FormBlock form="contactForm" />表单也是现成的——联系表单、报价申请、预约表单、订单表单、注册表单——Proyecta 会将合适的表单接入您的页面。提交内容会进入您应用的管理面板收件箱,有新提交时系统会向所有者发送邮件通知。完整介绍请参阅**表单**。
内容可以翻译为多种语言区域(locales)。标记为本地化的字段为每种语言存储独立的值,读取 hooks 在您传入访客当前语言时,通过回退链(请求语言 → 配置的回退语言 → 默认语言)进行解析:
const { data: posts } = useCollection('posts', { locale: 'es' });单语言应用完全无需考虑语言区域——无需任何配置。关于翻译的更广泛介绍,请参阅**国际化**。
发布批次(Releases)
Section titled “发布批次(Releases)”发布批次将多个条目捆绑在一起,使其同时上线(或同时取消发布)——您可以提前准备一次协调好的内容发布(一次产品发布、一个新产品页面、一次 FAQ 更新),然后一次性全部切换上线。
注意: 定时自动发布尚未实现。带有
scheduled_at日期的发布批次会进入scheduled状态,但必须手动发布。按计划时间自动发布的功能即将推出。
常见使用模式(交给 AI 来连接)
Section titled “常见使用模式(交给 AI 来连接)”您很少需要手动编写这些——描述您想要的内容,Proyecta 会基于真实集合进行构建:
"搭建一个博客。每篇文章包含标题、封面图、富文本正文、分类和标签。公开路由为 /blog 和 /blog/[slug],按最新排序。""添加一个 FAQ 区域,所有者可以编辑,按分类分组。""添加一个可预约的服务列表,并附带报价申请表单。""将网站改为双语——英语和西班牙语——并添加语言切换器。""为客户评价集合填充五条适合咖啡馆的真实评论。"
您的应用数据存放在哪里
Section titled “您的应用数据存放在哪里”CMS 是持久性内容和记录的默认存储位置。少数类型的数据存放在专用系统中:
| 数据类型 | 存储位置 |
|---|---|
| 内容与记录(文章、服务、列表、FAQ、目录、预约) | Proyecta CMS(本页)——默认位置 |
| 实时/行为状态(即时聊天、动态流、在线状态、游戏状态) | 实时存储 — 即将推出 |
| 用户账户与登录 | Auth |
| 商品、订单、订阅、支付 | Commerce |
| 上传的文件与媒体 | Files & Media |
| 内置于构建产物中的静态资源 | 您项目中的 public/ 目录 |
CMS 是默认选择。真正用于_实时_行为的实时存储即将推出;即便如此,持久性内容和商品目录仍将存储在 CMS 中。
- Builder 内置内容编辑器 — 直接从 builder 控制台浏览和编辑 CMS 集合(目前:通过管理面板或 AI 管理内容)。
- 富文本所见即所得编辑器 — 对
markdown字段进行可视化编辑(目前以 markdown 形式编辑)。 - 定时自动发布 — 发布批次在计划时间自动上线。
- 内容更改的实时预览。
- 内容角色权限 — 将编辑权限与开发者权限分离。