使用 EmDash 管理后台,让条目从第一份草稿走到已发布页面。编辑器会将 草稿更改与访客可见的版本分开保存,因此保存和发布是两个独立的 操作。
打开集合
在你的站点上打开 /_emdash/admin 并登录。在侧边栏中选择一个集合,例如 Posts 或 Pages。
集合页面会列出它的条目。在这里你可以:
- 选择 Add New 创建条目;
- 按条目标题、slug 和标记为可搜索的字段搜索;
- 按发布状态、作者、署名、日期和语言区域筛选;
- 在条目的各页之间切换,并选择每页显示 20、50 还是 100 条;
- 选择条目进行批量发布、退回草稿或移入回收站;以及
- 打开 Trash 恢复或永久删除条目。
编辑器中可用的字段和发布功能取决于集合的内容模型。 例如,集合可能支持修订、预览、分类法或搜索。
创建并发布条目
-
在集合页面上选择 Add New。
-
填写必填字段。如果集合有标题字段,EmDash 会用它来建议 slug。你可以在发布前编辑 slug。
-
添加正文和辅助字段,例如摘要、特色图片、署名、分类 或标签。
-
选择 Save。第一次保存会将条目创建为草稿,并打开其固定的编辑器 URL。
-
检查草稿。如果集合支持预览,请选择 Preview,在发布前查看渲染后的 页面。
-
选择 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 面板 会显示当前条目已配置的语言区域。
-
打开源条目,在设置面板中找到 Translations。
-
为尚无条目的语言区域选择 Translate。
-
编辑复制过来的标题、slug、正文和其他可翻译字段。
-
选择 Save,然后在准备好时发布或排期该翻译。
每个翻译都有自己的 slug、发布状态、排期和修订历史。使用集合页面上的语言区域 选择器可一次查看一种语言。
将内容移入回收站
打开条目的操作菜单,或在集合页面上选择一行或多行,然后选择 Move to Trash。移入回收站的条目不再出现在普通内容查询中,但仍可在集合的 Trash 标签页中找到。
在 Trash 中,选择 Restore 可将条目放回集合。恢复的条目会以 无排期的草稿形式返回。发布后即可公开。
自动化内容工作
REST API 和 EmDash CLI 支持相同的草稿和发布工作流。集合字段属于
请求的 data 对象内部。更新会保存一份草稿修订;发布是单独的操作。
更新或发布时请传入最新的 _rev 值,这样服务器会拒绝过期的写入,而不是
覆盖较新的工作成果。
状态转换、权限、冲突和钩子请参阅内容生命周期参考。 REST API 参考定义了请求和响应体, CLI 参考涵盖了等效的终端命令。