处理内容

本页内容

使用 EmDash 管理后台,让条目从第一份草稿走到已发布页面。编辑器会将 草稿更改与访客可见的版本分开保存,因此保存和发布是两个独立的 操作。

打开集合

在你的站点上打开 /_emdash/admin 并登录。在侧边栏中选择一个集合,例如 Posts 或 Pages。

集合页面会列出它的条目。在这里你可以:

  • 选择 Add New 创建条目;
  • 按条目标题、slug 和标记为可搜索的字段搜索;
  • 按发布状态、作者、署名、日期和语言区域筛选;
  • 在条目的各页之间切换,并选择每页显示 20、50 还是 100 条;
  • 选择条目进行批量发布、退回草稿或移入回收站;以及
  • 打开 Trash 恢复或永久删除条目。

编辑器中可用的字段和发布功能取决于集合的内容模型。 例如,集合可能支持修订、预览、分类法或搜索。

创建并发布条目

  1. 在集合页面上选择 Add New。

  2. 填写必填字段。如果集合有标题字段,EmDash 会用它来建议 slug。你可以在发布前编辑 slug。

  3. 添加正文和辅助字段,例如摘要、特色图片、署名、分类 或标签。

  4. 选择 Save。第一次保存会将条目创建为草稿,并打开其固定的编辑器 URL。

  5. 检查草稿。如果集合支持预览,请选择 Preview,在发布前查看渲染后的 页面。

  6. 选择 Publish now,然后确认。已保存的草稿会成为公开 内容查询返回的线上版本。

条目有稳定的内容 ID 和独立的 slug。即使 slug 发生变化,ID 仍会标识同一个条目。模板通常使用 getEmDashCollection() 返回的面向 URL 的标识符;查询内容指南 解释了这两个值。

编写富文本

Portable Text 字段提供块编辑器,可用于标题、段落、引用、列表、链接、 图片、视频、图库、代码块、表格、HTML 块和可复用区块。已安装的插件可能会 添加更多块。

使用工具栏设置所选文本的格式。要插入块,请选择段落旁边的添加块控件, 或输入 / 并按名称搜索块。图片块和图库块会打开与图片字段相同的 媒体选择器。

你也可以将图片和视频文件拖入编辑器,或粘贴复制的图片或截图。每个文件 都会上传到媒体库,并在上传完成后出现在前后的块之间。如果 上传失败,原因会显示在该文件本应出现的位置。

选择图片块时,其上方会出现工具栏。你可以用它替换图片、编辑其替代 文本、设置对齐、添加链接或删除该块。图片有描述后,Alt text 按钮会高亮显示, 悬停时会显示该描述。仅为媒体库图片文件名的替代文本 不算作描述。在图片下方的字段中输入说明文字,然后按 Enter 即可在其下方 继续书写。选中图片后,按 Tab 会移到说明文字,再移到工具栏。

工具栏中的 Image settings 会打开该图片这次使用的所有设置,包括其 显示尺寸和可选的工具提示。其中的 Edit asset 会打开底层的媒体库条目, 更改或替换该资源可能会影响其他使用它的条目。关于这一区别,请参阅 媒体库。

添加视频

输入 /video 添加视频块,然后从媒体库中选择视频,或在打开的选择器中上传一个。如果关闭选择器,空视频块会保留在你放置的位置,以便稍后填充:点击它,在选中状态下按 Enter,或把视频文件拖放到它上面。空视频块在你的站点上不会显示任何内容。你也可以把视频文件拖放到文本中的任意位置。

视频会在编辑器中按其在站点上的样子播放,宽度与文本一致。在其下方的字段中输入说明文字,然后按 Enter 即可继续在其下方书写。

将鼠标悬停在视频上或选中它,其角落会显示 Replace video 和 Delete video。在选中的视频上按 Tab 会移到播放器,按空格键即可播放,然后依次移到说明文字和这两个按钮。按 Escape 返回该块。

上传遵循媒体库的大小限制 maxUploadSize,除非你调高,否则为 50 MiB。

添加 HTML、CSS 和 JavaScript

HTML 块用于存放其他块无法表达的代码,例如嵌入内容、注册表单或小型小组件。它的标签页有 HTML、CSS、JS 和 Preview。每个代码标签页都是一个代码编辑器,按 Tab 键会缩进;按 Escape 键可返回周围的文本。CSS 和 JS 标签页是可选的:你也可以把包含 <style> 和 <script> 元素的完整代码片段直接粘贴到 HTML 标签页中。

Preview 会按你的站点渲染的方式显示该块。打开条目时,运行 JavaScript 的块会等到你选择 Run preview 后才运行, 因此有问题的脚本不会让编辑器卡死。

块的菜单用于设置你的站点如何渲染它:

  • Isolated frame 会在一个随内容自动增高的沙盒框架中运行该块的 HTML、CSS 和 JavaScript。该框架无法读取你站点的 Cookie、存储或页面,你站点的样式也不会影响它。相对链接从你站点的根目录解析。访客在框架内点击之后,框架可以在访客 当前的标签页或新标签页中打开其他页面。新的 HTML 块使用此模式,但从其他网站或浏览器标签页粘贴进来的块不使用。 不要像 height: 100vh 那样按框架的视口来设定内容尺寸:框架会增高以容纳内容,而这会让内容再次变高,一直持续到框架 达到 20,000 像素为止。
  • Inline 会把 HTML 放入页面中,并使用你站点的样式。你的站点会保留文本格式、链接、列表、表格、图片和 iframe, 并移除其他标记,例如脚本、<style> 元素、style 属性、媒体和表单控件。来自 YouTube 和 Vimeo 以外站点的 iframe 会被清空。内联块没有 CSS 或 JS 标签页。

搜索引擎可能不会把隔离框架内的文本视为页面的一部分。请把对搜索重要的文本放在段落或内联块中。

嵌入其他站点的页面

iframe 块用于显示其他站点的页面,例如视频、地图或表单。输入 /iframe,然后将该站点的嵌入代码或链接粘贴到 Code 标签页中。 YouTube 和 Vimeo 的链接会变成它们各自的播放器,其他任何 https 链接则按原样嵌入。Preview 会显示被嵌入的页面。 打开条目时,已保存的块会等到你选择 Load preview 才加载,因此在你提出请求之前,管理后台不会加载其他站点的页面。 从其他网站或浏览器标签页粘贴进来的 iframe 块是空的。

只有 https 页面可以被嵌入,并且该块只保留嵌入代码中它所需要的部分:地址、标题、尺寸、全屏支持,以及播放器使用的权限。 有些站点拒绝出现在其他站点的页面内;它们的预览会保持空白,或显示来自该站点的错误。

运行脚本而不是 iframe 的嵌入代码(例如某些社交媒体帖子)应放入 HTML 块。

保存草稿更改

第一次保存之后,编辑器会在你停止输入两秒后自动保存更改。Save 按钮会依次变为 Saving… 和 Saved,让你确认服务器已接受 草稿。自动保存会替换当前的自动保存修订,而不是在每次停顿时都用一个 检查点填满修订历史。

如果希望编辑过程中的某个时间点保留在修订历史中,请选择 Save。如果 保存失败,编辑器会保留未保存的字段并显示错误。在按钮恢复为 Saved, 或你已将未保存的内容复制到别处之前,请不要离开页面。

对于已发布的条目,保存更改只会更新其草稿。访客仍会收到 之前的线上修订。使用 Preview draft 检查待发布版本,使用 Live View 检查 公开版本,当草稿准备好替换它时,使用 Publish changes。

更改已发布条目的 slug 遵循相同的草稿流程。公开 URL 会在你 发布草稿时更改,而不是在自动保存运行时更改。

与其他编辑者协作

打开条目会为该条目和语言区域获取编辑锁。如果其他人已经 打开了它,EmDash 会标明锁的持有者,并提供两个选择:

  • Open read-only 以不接受编辑的方式显示条目,这样你就不会输入 会被丢弃的内容。
  • Take over 将锁交给你。对方会保留已输入的内容,但在两分钟内 对方的编辑器会提示你持有该条目。对方的下一次保存会被拒绝。

条目打开期间,锁会持续续期,当你离开编辑器或关闭标签页时释放。 如果浏览器或计算机在未释放锁的情况下关闭,锁会在最后一次 续期的七分钟后过期。

锁对每个语言区域是独立的,因此两个人可以编辑同一条目的不同翻译。 当另一位编辑者持有锁时,脚本、API 客户端或 MCP 客户端同样会被拒绝, 除非使用文档中说明的覆盖方式。完整的 API 行为请参阅条目编辑锁, MCP 工具请参阅 内容生命周期与署名。

管理员可以在 Content Types 下依次打开集合、Edit locking, 为集合关闭锁定。

发布或排期更改

发布和排期使用不同的控件:

  • Publish now 在确认后将新草稿上线。
  • Publish changes 在确认后将已发布条目的待发布更改上线。
  • Schedule 设置新条目或待发布更改上线的时间。
  • Change schedule 更新已有的排期。
  • Remove schedule 取消已有的排期。
  • Unpublish 将线上修订从公开查询中移除,取消所有排期,并保留 一份可编辑的草稿。

要为条目排期,请先保存,选择发布摘要下方的 Schedule,然后选择一个 未来的日期和时间。编辑器会显示排期所用的时区。在该时间之前, 当前的线上修订保持公开;对于新条目,则尚无任何公开内容。

Node.js 部署会自动运行排期发布扫描。Cloudflare Workers 需要 Cron Trigger。Cloudflare 入门模板已包含它;现有部署可以按照 排期发布验证触发器。

查看发布日历

日历会显示各集合中已发布和已排期的内容。Contributor 及更高角色可以从侧边栏或命令面板打开 Calendar。当有内容 已排期时,仪表盘的 Scheduled 计数也会链接到日历。

日历有两种视图:

  • Month 显示日期网格。已发布的条目显示为普通行,已排期的条目显示为 卡片。悬停或聚焦某个条目可查看其完整标题、状态、时间和集合。当某一天 的条目多到放不下时,选择 +N more 即可全部列出。
  • Agenda 按天列出该月,并显示每个条目的时间。在当前月份中,今天之前的日期 默认折叠,除非其中某天有逾期条目,红线标记当前时刻。

在手机或其他窄屏幕上,日历会以 Agenda 打开,Month 则显示一个 日期选择器,有条目的日期上带有圆点。选择某一天即可列出其条目。

选择某个条目可在侧边面板中打开其详情,按住 Ctrl 点击(macOS 上为 Cmd 点击)则会 在新标签页的编辑器中打开。面板显示条目的状态、时间、集合、语言区域和 翻译、署名以及最后编辑时间。在面板中,你可以在编辑器中打开条目、预览已排期的更改, 或在站点上查看已发布的条目。如果你有权发布该条目 (Author 可发布自己的条目,Editor 及更高角色可发布任何条目), 还可以重新排期、移除排期,或立即发布逾期的条目。在手机上,面板会以 屏幕底部的面板形式打开。

使用 Filter 可按集合和状态缩小两种视图的范围,在多语言站点上还可按语言区域缩小范围。筛选器、视图、月份和已打开的条目 都保存在页面 URL 中,因此你可以将其加入书签或分享。

条目按站点所在时区放置在相应日期上,日历会在月份旁边标明该时区。如果你的 浏览器使用不同的时区,日历会给出提示,条目时间也会以你自己的 时区显示。

日历会显示:

  • 已发布的条目,显示在其发布日期;
  • 已排期的条目,显示在其排期日期;以及
  • 已发布条目的已排期更改,显示在其排期日期,并标记为 Update。更改 上线后,该条目只会显示在其原始发布日期。

排期时间已超过两分钟的排期会标记为 Overdue。这通常意味着 排期发布扫描没有运行;请参阅发布或排期更改。

日历不包含没有排期的草稿、回收站中的条目,以及在侧边栏中隐藏的 集合。仪表盘的 Scheduled 计数涵盖所有月份并包含隐藏的集合,因此 可能高于日历为某一个月显示的数量。

日历每月最多加载 1,000 个条目,包括网格中显示的 相邻月份的日期。条目更多时,它会说明已加载的条目截止到哪一天,并将 之后的日期标记为未加载。

恢复修订

支持修订的集合会在设置面板中显示 Revisions。展开它可查看已保存的 版本以及各版本之间更改的字段。选择一个修订以查看其内容,如果想再次使用 该版本,请选择 Restore。

恢复会创建一个包含所选内容的新修订。它不会删除之前的 修订,因此之后你仍然可以查看完整的历史序列。

翻译条目

当启用国际化后,Translations 面板 会显示当前条目已配置的语言区域。

  1. 打开源条目,在设置面板中找到 Translations。

  2. 为尚无条目的语言区域选择 Translate。

  3. 编辑复制过来的标题、slug、正文和其他可翻译字段。

  4. 选择 Save,然后在准备好时发布或排期该翻译。

每个翻译都有自己的 slug、发布状态、排期和修订历史。使用集合页面上的语言区域 选择器可一次查看一种语言。

将内容移入回收站

打开条目的操作菜单,或在集合页面上选择一行或多行,然后选择 Move to Trash。移入回收站的条目不再出现在普通内容查询中,但仍可在集合的 Trash 标签页中找到。

在 Trash 中,选择 Restore 可将条目放回集合。恢复的条目会以 无排期的草稿形式返回。发布后即可公开。

自动化内容工作

REST API 和 EmDash CLI 支持相同的草稿和发布工作流。集合字段属于 请求的 data 对象内部。更新会保存一份草稿修订;发布是单独的操作。 更新或发布时请传入最新的 _rev 值,这样服务器会拒绝过期的写入,而不是 覆盖较新的工作成果。

状态转换、权限、冲突和钩子请参阅内容生命周期参考。 REST API 参考定义了请求和响应体, CLI 参考涵盖了等效的终端命令。

继续阅读查询内容,了解如何在 Astro 站点中渲染已发布的条目, 或阅读媒体库,了解如何添加和管理可复用文件。