このガイドでは、EmDash管理ダッシュボードを使用してコンテンツを作成、編集、管理する方法を説明します。
管理画面へのアクセス
サイト上の /_emdash/admin をブラウザで開きます。セットアップ時に作成した認証情報でログインします。
ダッシュボードには以下が表示されます:
- サイドバー - Collection、メディア、設定へのナビゲーション
- コンテンツリスト - 選択したCollectionのエントリ
- クイックアクション - 新規コンテンツ作成、一括操作
コンテンツの作成
-
サイドバーのCollection名をクリック(例:Posts)
-
New Post(またはCollectionに対応するボタン)をクリック
-
必須フィールドを入力:
- Title - コンテンツの表示名
- Slug - URL識別子(タイトルから自動生成、編集可能)
-
リッチテキストエディタでコンテンツを追加
-
サイドバーでメタデータを設定:
- Status - 下書き、公開済み、またはアーカイブ済み
- 公開日 - 公開するタイミング
- カテゴリとタグ - タクソノミーの割り当て
-
保存 をクリック
下書きは管理画面でのみ表示されます。ステータスを公開済みに変更すると、サイト上でコンテンツが表示されます。
コンテンツのステータス
各エントリには3つのステータスのいずれかがあります:
| ステータス | 表示範囲 | 用途 |
|---|---|---|
| 下書き | 管理者のみ | 作業中 |
| 公開済み | 一般公開 | ライブコンテンツ |
| アーカイブ済み | 管理者のみ | 廃止コンテンツ |
エディタサイドバーのドロップダウンでステータスを変更します。
リッチテキストエディタ
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 |
画像の挿入
-
ツールバーの画像ボタンをクリック
-
メディアライブラリから既存の画像を選択するか、新しい画像をアップロード
-
代替テキストを追加(アクセシビリティのために必須)
-
配置とサイズのオプションを調整
-
挿入 をクリック
HTMLブロック
/html を使用して生HTMLブロックを挿入します。これはサードパーティのウィジェット、カスタムマークアップ、または標準ブロックタイプに適合しないコンテンツの埋め込みに便利です。HTMLブロックは、WordPressやContentfulからEmDashがネイティブのPortable Textブロックに変換できないマークアップを含むコンテンツをインポートする際にも自動的に作成されます。
追加のプロバイダーからの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 } }}
/>
コンテンツの編集
-
コンテンツを含むCollectionに移動
-
編集したいエントリをクリック
-
変更を加える
-
保存 をクリック
公開済みコンテンツへの変更はサイトに即座に反映されます。
リビジョン履歴
EmDashはコンテンツの変更を追跡します。エディタサイドバーからリビジョン履歴にアクセス:
-
エディタサイドバーの Revisions をクリック
-
タイムスタンプ付きの以前のバージョンリストを表示
-
リビジョンをクリックしてプレビュー
-
復元 をクリックしてそのバージョンに戻る
リビジョンの復元は、復元されたコンテンツで新しいリビジョンを作成します。元のリビジョン履歴は保持されます。
一括操作
複数のエントリに対して一度にアクションを実行:
-
コンテンツリストのチェックボックスを使用してエントリを選択
-
一括アクション ドロップダウンをクリック
-
アクションを選択:
- 公開 - 選択したすべてを公開済みに設定
- アーカイブ - 選択したすべてをアーカイブ済みに設定
- 削除 - 選択したものを永久に削除
-
アクションを確認
検索とフィルタリング
検索
検索ボックスを使用してタイトルまたはコンテンツで検索します。検索は大文字小文字を区別せず、部分的な単語にもマッチします。
フィルタ
コンテンツリストをフィルタリング:
- ステータス - 下書き、公開済み、アーカイブ済み
- 日付範囲 - 作成日または更新日
- 作成者 - コンテンツの作成者
- タクソノミー - カテゴリまたはタグの割り当て
フィルタをクリア をクリックしてリセット。
コンテンツのスケジュール
将来の日付にコンテンツの公開をスケジュール:
-
コンテンツを作成または編集
-
ステータスを 下書き に設定
-
公開日 を将来の日時に設定
-
保存 をクリック
公開日が来ると、コンテンツは自動的に公開されます。
コンテンツの削除
編集画面またはコンテンツリストからコンテンツを削除:
エディタから
-
削除したいコンテンツを開く
-
ツールバーの 削除 をクリック
-
削除を確認
リストから
-
チェックボックスを使用してエントリを選択
-
一括アクション > 削除 をクリック
-
削除を確認
コンテンツAPI
プログラムによるアクセスには、EmDash管理APIを使用します。
コンテンツの作成
以下のリクエストは下書き投稿を作成します:
POST /_emdash/api/content/posts
Content-Type: application/json
Authorization: Bearer YOUR_API_TOKEN
{
"title": "新しい投稿",
"slug": "new-post",
"content": "<p>投稿内容はここ</p>",
"status": "draft"
}
コンテンツの更新
以下のリクエストは既存の投稿を更新して公開します:
PUT /_emdash/api/content/posts/new-post
Content-Type: application/json
Authorization: Bearer YOUR_API_TOKEN
{
"title": "更新されたタイトル",
"status": "published"
}
コンテンツの削除
以下のリクエストは投稿を永久に削除します:
DELETE /_emdash/api/content/posts/new-post
Authorization: Bearer YOUR_API_TOKEN
コンテンツの翻訳
i18nが有効な場合、任意のコンテンツエントリの翻訳を作成できます。
翻訳の作成
-
翻訳したいコンテンツエントリを開く
-
エディタサイドバーで Translations パネルを見つける
-
ターゲット言語の横にある 翻訳 をクリック
-
事前入力されたコンテンツを編集 — 新しい言語用にタイトル、スラッグ、本文を調整
-
保存 をクリック
新しい翻訳は元のエントリにリンクされ、下書きとして開始されます。翻訳が準備できたら独立して公開してください。
翻訳間の切り替え
翻訳パネルにはすべての設定済み言語が表示されます。既存の翻訳の横にある 編集 をクリックして直接移動できます。現在の言語はチェックマークで示されます。
言語フィルタ
コンテンツリストでは、ツールバーの言語ドロップダウンを使用して言語でエントリをフィルタリングします。各エントリは専用の列に言語を表示します。
各翻訳には独自のスラッグ、ステータス、リビジョン履歴があります。翻訳を独立して公開、スケジュール、管理できます。
設定、クエリ、言語スイッチャーの詳細については国際化ガイドを参照してください。