内容操作

本页内容

本指南介绍如何使用 EmDash 管理面板创建、编辑和管理内容。

访问管理面板

在浏览器中打开站点的 /_emdash/admin。使用设置时创建的凭据登录。

面板显示:

  • 侧边栏 - 导航到 Collection、媒体和设置
  • 内容列表 - 所选 Collection 中的条目
  • 快速操作 - 创建新内容、批量操作

创建内容

  1. 点击侧边栏中的 Collection 名称(如 Posts

  2. 点击 New Post(或对应 Collection 的等效按钮)

  3. 填写必填字段:

    • Title - 内容的显示名称
    • Slug - URL 标识符(从标题自动生成,可编辑)
  4. 使用富文本编辑器添加内容

  5. 在侧边栏中设置元数据:

    • Status - 草稿、已发布或已归档
    • 发布日期 - 何时发布
    • 分类和标签 - 分类法分配
  6. 点击 保存

草稿仅在管理面板中可见。将状态更改为已发布以使内容在站点上可见。

内容状态

每个条目都有三种状态之一:

状态可见性用途
草稿仅管理员进行中的工作
已发布公开在线内容
已归档仅管理员已下线内容

使用编辑器侧边栏中的下拉菜单更改状态。

富文本编辑器

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

插入图片

  1. 点击工具栏中的图片按钮

  2. 从媒体库选择已有图片,或上传新图片

  3. 添加替代文本(无障碍性必需)

  4. 调整对齐和大小选项

  5. 点击 插入

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
    // 在此添加您的提供商
  ],
});
---

<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 } }}
/>

编辑内容

  1. 导航到包含内容的 Collection

  2. 点击要编辑的条目

  3. 进行更改

  4. 点击 保存

对已发布内容的更改会立即显示在站点上。

修订历史

EmDash 会跟踪内容的更改。从编辑器侧边栏访问修订历史:

  1. 点击编辑器侧边栏中的 Revisions

  2. 查看带有时间戳的先前版本列表

  3. 点击修订进行预览

  4. 点击 恢复 回滚到该版本

恢复修订会用恢复的内容创建新的修订。原始修订历史被保留。

批量操作

对多个条目同时执行操作:

  1. 使用复选框在内容列表中选择条目

  2. 点击 批量操作 下拉菜单

  3. 选择操作:

    • 发布 - 将所有选中项设为已发布
    • 归档 - 将所有选中项设为已归档
    • 删除 - 永久删除选中项
  4. 确认操作

搜索和筛选

搜索

使用搜索框按标题或内容查找。搜索不区分大小写,并匹配部分词语。

筛选

按以下条件筛选内容列表:

  • 状态 - 草稿、已发布、已归档
  • 日期范围 - 创建或修改日期
  • 作者 - 内容创建者
  • 分类法 - 分类或标签分配

点击 清除筛选 重置。

定时发布内容

安排内容在未来某个日期发布:

  1. 创建或编辑内容

  2. 将状态设为 草稿

  3. 发布日期设为未来的日期和时间

  4. 点击 保存

当发布日期到达时,内容会自动发布。

删除内容

从编辑页面或内容列表中删除内容:

从编辑器

  1. 打开要删除的内容

  2. 点击工具栏中的 删除

  3. 确认删除

从列表

  1. 使用复选框选择条目

  2. 点击 批量操作 > 删除

  3. 确认删除

内容 API

如需编程访问,请使用 EmDash 管理 API。

创建内容

以下请求创建一个草稿文章:

POST /_emdash/api/content/posts
Content-Type: application/json
Authorization: Bearer YOUR_API_TOKEN

{
  "title": "我的新文章",
  "slug": "my-new-post",
  "content": "<p>文章内容在这里</p>",
  "status": "draft"
}

更新内容

以下请求更新现有文章并发布:

PUT /_emdash/api/content/posts/my-new-post
Content-Type: application/json
Authorization: Bearer YOUR_API_TOKEN

{
  "title": "更新后的标题",
  "status": "published"
}

删除内容

以下请求永久删除一篇文章:

DELETE /_emdash/api/content/posts/my-new-post
Authorization: Bearer YOUR_API_TOKEN

翻译内容

启用 i18n 时,可以为任何内容条目创建翻译。

创建翻译

  1. 打开要翻译的内容条目

  2. 在编辑器侧边栏中找到 Translations 面板

  3. 点击目标语言旁边的 翻译

  4. 编辑预填充的内容 — 为新语言调整标题、slug 和正文

  5. 点击 保存

新翻译与原始条目关联,并以草稿状态开始。翻译准备好后独立发布。

在翻译之间切换

翻译面板显示所有已配置的语言。点击任何现有翻译旁边的 编辑 直接导航。当前语言用勾号标记。

语言筛选

在内容列表中,使用工具栏中的语言下拉菜单按语言筛选条目。每个条目在专用列中显示其语言。

每个翻译都有自己的 slug、状态和修订历史。可以独立发布、安排和管理翻译。

有关配置、查询和语言切换器的完整详情,请参见国际化指南

下一步