本指南介绍如何使用 EmDash 管理仪表板创建、编辑和管理内容。
访问管理后台
在浏览器中打开站点上的 /_emdash/admin。使用设置时创建的凭据登录。
仪表板显示:
- 侧边栏 - 导航到集合、媒体和设置
- 内容列表 - 所选集合中的条目
- 快捷操作 - 创建新内容、批量操作
创建内容
-
点击侧边栏中的集合名称(例如 Posts)
-
点击 New Post(或您集合的等效按钮)
-
填写必填字段:
- Title - 内容的显示名称
- Slug - URL 标识符(从标题自动生成,可编辑)
-
使用富文本编辑器添加内容
-
在侧边栏设置元数据:
- Status - Draft、Published 或 Archived
- Publication date - 发布时间
- Categories and tags - 分类法分配
-
点击 Save
内容状态
每个条目有三种状态之一:
| 状态 | 可见性 | 用途 |
|---|---|---|
| Draft | 仅管理端 | 进行中的工作 |
| Published | 公开 | 已发布内容 |
| Archived | 仅管理端 | 已归档内容 |
使用编辑器侧边栏中的下拉菜单更改状态。
富文本编辑器
EmDash 编辑器支持:
- 标题 - H2 到 H6
- 格式 - 粗体、斜体、下划线、删除线
- 列表 - 有序和无序
- 链接 - 内部和外部
- 图片 - 从媒体库插入
- 代码块 - 带语法高亮
- HTML 块 - 用于自定义嵌入和小组件的原始 HTML
- 嵌入 - YouTube、Vimeo、Twitter
- 区块 - 通过
/section命令的可复用内容块
斜杠命令
输入 / 访问快速插入命令:
| 命令 | 操作 |
|---|---|
/section | 插入可复用区块 |
/image | 从媒体库插入图片 |
/code | 插入代码块 |
/html | 插入原始 HTML 块 |
键盘快捷键
| 操作 | 快捷键 |
|---|---|
| 粗体 | Ctrl/Cmd + B |
| 斜体 | Ctrl/Cmd + I |
| 链接 | Ctrl/Cmd + K |
| 撤销 | Ctrl/Cmd + Z |
| 重做 | Ctrl/Cmd + Shift + Z |
| 保存 | Ctrl/Cmd + S |
插入图片
-
点击工具栏中的图片按钮
-
从媒体库选择现有图片,或上传新图片
-
添加替代文本(无障碍访问必需)
-
调整对齐和大小选项
-
点击 Insert
HTML 块
使用 /html 插入原始 HTML 块。这对于嵌入第三方小组件、自定义标记或不适合标准块类型的内容很有用。从 WordPress 或 Contentful 导入 EmDash 无法转换为原生 Portable Text 块的标记内容时,也会自动创建 HTML 块。
要允许来自其他提供商的 iframe,请在 Portable Text 渲染中覆盖 htmlBlock 组件:
---
// src/components/MyHtmlBlock.astro
import sanitizeHtml from "sanitize-html";
const { node } = Astro.props;
if (!node?.html) {
return null;
}
const sanitized = sanitizeHtml(node.html, {
allowedTags: [...sanitizeHtml.defaults.allowedTags, "img", "span", "iframe"],
allowedAttributes: {
...sanitizeHtml.defaults.allowedAttributes,
"*": ["class", "id", "data-*", "style"],
iframe: ["src", "width", "height", "frameborder", "allow", "allowfullscreen"],
img: ["src", "srcset", "alt", "title", "width", "height", "loading"],
},
allowedIframeHostnames: [
"www.youtube.com",
"player.vimeo.com",
"iframe.videodelivery.net", // Cloudflare Stream
// Add your providers here
],
});
---
<div class="html-block" set:html={sanitized} />
然后将其传递给 <PortableText>:
---
import { PortableText } from "emdash/ui";
import MyHtmlBlock from "../components/MyHtmlBlock.astro";
---
<PortableText
value={post.data.content}
components={{ type: { htmlBlock: MyHtmlBlock } }}
/>
编辑内容
-
导航到包含该内容的集合
-
点击要编辑的条目
-
进行更改
-
点击 Save
已发布内容的更改会立即出现在您的网站上。
修订历史
EmDash 跟踪内容的更改。从编辑器侧边栏访问修订历史:
-
点击编辑器侧边栏中的 Revisions
-
查看带时间戳的先前版本列表
-
点击修订以预览
-
点击 Restore 恢复到该版本
批量操作
同时对多个条目执行操作:
-
使用复选框在内容列表中选择条目
-
点击 Bulk Actions 下拉菜单
-
选择操作:
- Publish - 将所有选中项设为已发布
- Archive - 将所有选中项设为已归档
- Delete - 永久删除选中项
-
确认操作
搜索和筛选
搜索
使用搜索框按标题或内容查找。搜索不区分大小写,支持部分匹配。
筛选器
按以下条件筛选内容列表:
- Status - Draft、Published、Archived
- Date range - 创建或修改日期
- Author - 内容创建者
- Taxonomy - 分类或标签分配
点击 Clear Filters 重置。
计划发布内容
计划在未来日期发布内容:
-
创建或编辑内容
-
将状态设为 Draft
-
将 Publication date 设为未来的日期和时间
-
点击 Save
到达发布日期时,内容会自动发布。
删除内容
从编辑屏幕或内容列表删除内容:
从编辑器
-
打开要删除的内容
-
点击工具栏中的 Delete
-
确认删除
从列表
-
使用复选框选择条目
-
点击 Bulk Actions > Delete
-
确认删除
内容 API
如需编程访问,请使用 EmDash 管理 API。
创建内容
以下请求创建草稿文章:
POST /_emdash/api/content/posts
Content-Type: application/json
Authorization: Bearer YOUR_API_TOKEN
{
"title": "My New Post",
"slug": "my-new-post",
"content": "<p>Post content here</p>",
"status": "draft"
}
更新内容
以下请求更新现有文章并发布:
PUT /_emdash/api/content/posts/my-new-post
Content-Type: application/json
Authorization: Bearer YOUR_API_TOKEN
{
"title": "Updated Title",
"status": "published"
}
删除内容
以下请求永久删除文章:
DELETE /_emdash/api/content/posts/my-new-post
Authorization: Bearer YOUR_API_TOKEN
翻译内容
当启用 i18n时,您可以创建任何内容条目的翻译。
创建翻译
-
打开要翻译的内容条目
-
在编辑器侧边栏中找到 Translations 面板
-
点击目标语言区域旁的 Translate
-
编辑预填内容 — 为新语言调整标题、slug 和正文
-
点击 Save
新翻译与原始条目关联,并以草稿状态开始。翻译完成后可独立发布。
在翻译之间切换
Translations 面板显示所有配置的语言区域。点击任何现有翻译旁的 Edit 直接导航。当前语言区域以勾选标记显示。
语言区域筛选
在内容列表中,使用工具栏中的语言区域下拉菜单按语言筛选条目。每个条目在专用列中显示其语言区域。
有关配置、查询和语言切换器的完整详情,请参阅国际化指南。