このガイドでは、EmDash 管理ダッシュボードを使用してコンテンツを作成、編集、管理する方法を説明します。
管理画面へのアクセス
サイトの /_emdash/admin をブラウザで開きます。セットアップ時に作成した認証情報でログインします。
ダッシュボードには以下が表示されます:
- サイドバー - コレクション、メディア、設定へのナビゲーション
- コンテンツリスト - 選択したコレクションのエントリ
- クイックアクション - 新規コンテンツ作成、一括操作
コンテンツの作成
-
サイドバーでコレクション名(例:Posts)をクリック
-
New Post(またはコレクションに相当するボタン)をクリック
-
必須フィールドを入力:
- Title - コンテンツの表示名
- Slug - URL 識別子(タイトルから自動生成、編集可能)
-
リッチテキストエディターでコンテンツを追加
-
サイドバーでメタデータを設定:
- Status - Draft、Published、Archived
- Publication date - 公開日時
- Categories and tags - タクソノミーの割り当て
-
Save をクリック
コンテンツステータス
各エントリには3つのステータスのいずれかがあります:
| ステータス | 表示 | 用途 |
|---|---|---|
| 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 ブロックを挿入します。サードパーティウィジェット、カスタムマークアップ、または標準ブロックタイプに合わないコンテンツの埋め込みに便利です。EmDash がネイティブ Portable Text ブロックに変換できないマークアップを含む WordPress または Contentful からのコンテンツをインポートする際にも、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 をクリック
-
事前入力されたコンテンツを編集 — 新しい言語用にタイトル、スラッグ、本文を調整
-
Save をクリック
新しい翻訳は元のエントリにリンクされ、下書きとして開始されます。翻訳の準備ができたら独立して公開します。
翻訳間の切り替え
Translations パネルには設定されたすべてのロケールが表示されます。既存の翻訳の横の Edit をクリックして直接移動します。現在のロケールはチェックマークで表示されます。
ロケールフィルター
コンテンツリストで、ツールバーのロケールドロップダウンを使用して言語でエントリをフィルタリングします。各エントリは専用列にロケールを表示します。
設定、クエリ、言語スイッチャーの詳細については国際化ガイドを参照してください。
次のステップ
- Querying Content - テンプレートでコンテンツを取得
- Media Library - ファイルのアップロードと管理
- Taxonomies - カテゴリとタグでコンテンツを整理
- Internationalization - 多言語コンテンツと翻訳