コンテンツの操作

このページ

EmDash 管理画面を使って、エントリを最初の下書きから公開ページまで進めます。エディターは、 下書きの変更を訪問者が見られるバージョンとは分けて保持するため、保存と公開は別々の 操作です。

コレクションを開く

サイトの /_emdash/admin を開いてサインインします。サイドバーで Posts や Pages などの コレクションを選択します。

コレクションページには、そのエントリが一覧表示されます。ここでは次の操作ができます。

  • Add New を選択してエントリを作成する。
  • エントリのタイトル、スラッグ、検索可能に設定されたフィールドで検索する。
  • 公開状態、作成者、署名、日付、ロケールで絞り込む。
  • エントリのページを移動し、1 ページに 20 件、50 件、100 件のどれを表示するかを選ぶ。
  • エントリを選択して、一括公開、下書きへの差し戻し、ゴミ箱への移動を行う。
  • Trash を開いて、エントリを復元または完全に削除する。

エディターで利用できるフィールドと公開機能は、コレクションのコンテンツモデルによって異なります。 たとえば、コレクションがリビジョン、プレビュー、タクソノミー、検索に対応している場合があります。

エントリを作成して公開する

  1. コレクションページで Add New を選択します。

  2. 必須フィールドを入力します。コレクションにタイトルフィールドがある場合、EmDash はそれを使ってスラッグを 提案します。公開前にスラッグを編集できます。

  3. 本文と、抜粋、アイキャッチ画像、署名、カテゴリー、タグなどの補助フィールドを 追加します。

  4. Save を選択します。最初の保存でエントリが下書きとして作成され、その固定のエディター URL が開きます。

  5. 下書きを確認します。コレクションがプレビューに対応している場合は、Preview を選択して、公開前に レンダリングされたページを確認します。

  6. Publish now を選択して確認します。保存した下書きが、公開コンテンツクエリが返す ライブバージョンになります。

エントリには、安定したコンテンツ ID と、別のスラッグがあります。スラッグが変わっても、 ID は同じエントリを指し続けます。テンプレートは通常、 getEmDashCollection() が返す URL 向けの識別子を使用します。コンテンツのクエリガイドで 両方の値を説明しています。

リッチテキストを書く

Portable Text フィールドには、見出し、段落、引用、リスト、リンク、 画像、動画、ギャラリー、コードブロック、テーブル、HTML ブロック、再利用可能なセクションに対応したブロックエディターがあります。インストール済みのプラグインが ブロックを追加することもあります。

選択したテキストの書式設定にはツールバーを使います。ブロックを挿入するには、段落の横にあるブロック追加コントロールを選択するか、 / を入力してブロック名で検索します。画像ブロックとギャラリーブロックでは、画像フィールドと同じ メディアピッカーが開きます。

画像ファイルや動画ファイルをエディターにドラッグしたり、コピーした画像やスクリーンショットを貼り付けたりすることもできます。各ファイルは メディアライブラリにアップロードされ、アップロードが完了すると前後のブロックの間に表示されます。 アップロードに失敗した場合は、ファイルが入るはずだった場所にその理由が表示されます。

画像ブロックを選択すると、その上にツールバーが表示されます。これを使って、画像の置き換え、代替テキストの編集、 配置、リンクの追加、ブロックの削除ができます。画像に説明があると Alt text ボタンが強調表示され、 ホバーすると説明が表示されます。メディアライブラリの画像のファイル名だけの代替テキストは、 説明として数えられません。画像の下のフィールドにキャプションを入力し、Enter を押すとその下で 書き続けられます。選択した画像で Tab を押すと、キャプション、次にツールバーへ移動します。

ツールバーの Image settings では、その画像の使用箇所に関するすべての設定(表示サイズや 任意のツールチップなど)が開きます。そこにある Edit asset は、元になるメディアライブラリの項目を開きます。 アセットを変更または置き換えると、それを使用している他のエントリにも影響する場合があります。この違いについては、 メディアライブラリを参照してください。

動画を追加する

/video と入力し、メディアライブラリから動画を選ぶか、開いたピッカーで動画をアップロードします。 動画を選ぶと、動画ブロックが追加されます。テキスト内のどこにでも動画ファイルを ドロップすることもできます。

動画は、サイトで表示されるのと同じように、テキストの幅でエディター内に再生されます。動画の下の フィールドにキャプションを入力し、Enter を押すと、その下に続けて書けます。

動画にカーソルを合わせるか動画を選択すると、角に Replace video と Delete video が表示されます。 動画を選択した状態で Tab を押すとプレーヤーに移動し、スペースキーで再生できます。続けてキャプションと 2 つのボタンに移動します。Esc を押すとブロックに戻ります。

アップロードにはメディアライブラリのサイズ上限 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 ブロックに入れてください。

下書きの変更を保存する

最初の保存後は、入力をやめて 2 秒後に、エディターが変更を自動保存します。Save ボタンは Saving… を経て Saved に変わるため、サーバーが下書きを受け付けたことを 確認できます。自動保存は、一時停止のたびにチェックポイントでリビジョン履歴を埋めるのではなく、 現在の自動保存リビジョンを置き換えます。

編集の流れの中のある時点をリビジョン履歴に残したい場合は、Save を選択します。保存に 失敗した場合、エディターは未保存のフィールドをそのまま保持し、エラーを表示します。ボタンが Saved に戻るか、未保存の作業を別の場所にコピーするまで、ページを離れないでください。

公開済みのエントリでは、変更を保存しても下書きだけが更新されます。訪問者には引き続き 以前のライブリビジョンが表示されます。保留中のバージョンを確認するには Preview draft、 公開バージョンを確認するには Live View、下書きでそれを置き換える準備ができたら Publish changes を使います。

公開済みエントリのスラッグを変更する場合も、同じ下書きの流れになります。公開 URL が変わるのは、 下書きを公開したときであり、自動保存が実行されたときではありません。

別のエディターと作業する

エントリを開くと、そのエントリとロケールの編集ロックが取得されます。別の人がすでに 開いている場合、EmDash はロックを保持している人を示し、2 つの選択肢を提示します。

  • Open read-only は、編集を受け付けずにエントリを表示します。破棄されてしまう作業を 入力することがありません。
  • Take over は、ロックをあなたに移します。もう一方の人は入力した内容を保持しますが、2 分以内に その人のエディターに、あなたがエントリを保持していることが表示されます。その人の次の保存は拒否されます。

ロックはエントリを開いている間は更新され、エディターを離れるかタブを閉じると解放されます。 ロックを解放せずにブラウザーやコンピューターが閉じた場合、最後の更新から 7 分後にロックが 期限切れになります。

ロックはロケールごとに独立しているため、2 人が同じエントリの別々の翻訳を編集できます。 スクリプト、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 のカウントからもカレンダーへリンクされます。

カレンダーには 2 つのビューがあります。

  • Month は日付のグリッドを表示します。公開済みのエントリはプレーンな行、スケジュール済みのエントリは カードで表示されます。エントリにホバーまたはフォーカスすると、完全なタイトル、状態、時刻、コレクションが表示されます。1 日に 収まりきらないほどエントリがある場合は、+N more を選択してすべて一覧表示します。
  • Agenda は、月を日ごとに、各エントリの時刻とともに一覧表示します。当月では、今日より前の日は、 期限超過のエントリがある日を除いて折りたたまれた状態で始まり、赤い線で現在を示します。

スマートフォンなど幅の狭い画面では、カレンダーは Agenda で開き、Month はエントリのある日にドットが付いた 日付ピッカーを表示します。日を選択すると、その日のエントリが一覧表示されます。

エントリを選択すると、その詳細がサイドパネルで開きます。Ctrl(macOS では Cmd)を押しながらクリックすると、 新しいタブでエディターに開きます。パネルには、エントリの状態、時刻、コレクション、ロケールと 翻訳、署名、最終編集日時が表示されます。パネルから、エディターでエントリを開く、スケジュール済みの変更を プレビューする、公開済みエントリをサイトで表示する、といった操作ができます。エントリを公開できる場合 (Author は自分のエントリ、Editor 以上のロールはすべてのエントリ)は、 スケジュールの変更、スケジュールの削除、期限超過のエントリの即時公開もできます。スマートフォンでは、パネルは 画面下部のシートとして開きます。

Filter を使うと、コレクションと状態、多言語サイトではロケールでも、両方のビューを絞り込めます。フィルター、ビュー、月、 開いているエントリはページの URL に保持されるため、ブックマークや共有ができます。

エントリは、サイトのタイムゾーンで日付に配置されます。このタイムゾーンは月の横に表示されます。ブラウザーが 別のタイムゾーンを使用している場合はカレンダーがそれを示し、エントリの時刻はお使いのタイムゾーンでも 表示されます。

カレンダーには次のものが表示されます。

  • 公開済みのエントリは、公開された日付に表示されます。
  • スケジュール済みのエントリは、スケジュールされた日付に表示されます。
  • 公開済みエントリのスケジュール済みの変更は、スケジュールされた日付に Update のマーク付きで表示されます。変更が ライブになると、エントリは元の公開日にのみ表示されます。

予定時刻を 2 分を超えて過ぎたスケジュールには Overdue のマークが付きます。これは通常、 スケジュール公開のスイープが実行されていないことを意味します。変更を公開またはスケジュールするを参照してください。

カレンダーには、スケジュールのない下書き、ゴミ箱内のエントリ、サイドバーで非表示の コレクションは含まれません。ダッシュボードの Scheduled のカウントはすべての月を対象とし、非表示のコレクションも含むため、 カレンダーに 1 か月分として表示される数より多くなる場合があります。

カレンダーは、1 か月につき最大 1,000 件のエントリを読み込みます。これにはグリッドに表示される 隣接する月の日も含まれます。それを超える場合は、読み込まれたエントリがどの日で終わるかを示し、 それ以降の日を未読み込みとして表示します。

リビジョンを復元する

リビジョンに対応するコレクションでは、設定パネルに Revisions が表示されます。展開すると、保存された バージョンと、その間で変更されたフィールドが表示されます。リビジョンを選択して内容を確認し、 そのバージョンをもう一度使いたい場合は Restore を選択します。

復元すると、選択した内容を含む新しいリビジョンが作成されます。それ以前のリビジョンは削除されないため、 復元後も一連の履歴をすべて確認できます。

エントリを翻訳する

国際化が有効な場合、Translations パネルに 現在のエントリに対して設定されているロケールが表示されます。

  1. 元のエントリを開き、設定パネルで Translations を探します。

  2. まだエントリがないロケールに対して Translate を選択します。

  3. コピーされたタイトル、スラッグ、本文、その他の翻訳可能なフィールドを編集します。

  4. Save を選択し、準備ができたら翻訳を公開またはスケジュールします。

各翻訳には、独自のスラッグ、公開状態、スケジュール、リビジョン履歴があります。コレクションページのロケール セレクターを使うと、言語ごとに表示できます。

コンテンツをゴミ箱に移動する

エントリのアクションを開くか、コレクションページで 1 つ以上の行を選択して、Move to Trash を選びます。ゴミ箱に移動したエントリは通常のコンテンツクエリに表示されなくなりますが、コレクションの Trash タブで引き続き利用できます。

Trash で Restore を選択すると、エントリをコレクションに戻せます。復元されたエントリは、 スケジュールのない下書きとして戻ります。公開すると、一般に公開されます。

コンテンツ作業を自動化する

REST API と EmDash CLI は、同じ下書きと公開のワークフローに対応しています。コレクションのフィールドは、 リクエストの data オブジェクト内に指定します。更新は下書きリビジョンを保存し、公開は別の操作です。 更新または公開のときは最新の _rev の値を渡すと、サーバーは古い書き込みを拒否し、 より新しい作業を上書きしません。

状態遷移、権限、競合、フックについては、コンテンツライフサイクルのリファレンスを参照してください。 REST API リファレンスではリクエストとレスポンスの本文を定義し、 CLI リファレンスでは同等のターミナルコマンドを扱います。

公開済みのエントリを Astro サイトでレンダリングするにはコンテンツのクエリ、 再利用可能なファイルを追加して管理するにはメディアライブラリに進んでください。