コレクションは、1種類のコンテンツと、エディターがそれを作成するために使用するフォームを定義します。そのフィールドは、各エントリーが含むことができる値を定義します。たとえば、製品コレクションには、タイトル、価格、説明、製品画像、およびブランドエントリーへの参照を含めることができます。
管理者はコンテンツタイプでコレクションを管理します。シードファイルは、サイトまたは環境が設定から設定される際に、同じコレクション設定を定義できます。
コレクションのアイデンティティ
すべてのコレクションには、複数形のラベル、オプションの単数形のラベル、およびスラッグがあります。ラベルは管理パネルに表示されます。スラッグは、クエリ、APIルート、シードファイル、およびデータベースでコレクションを識別します。
たとえば、ブログ投稿というラベルのコレクションは、単数形のラベルとしてブログ投稿を、スラッグとしてpostsを使用できます。Astroコードは、そのスラッグでクエリします:
import { getEmDashCollection } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
コレクションを作成する前にスラッグを選択してください。既存のクエリと保存された列がそれに依存しているため、管理パネルは後でコレクションスラッグやフィールドスラッグの名前を変更しません。スラッグは小文字で始まり、小文字、数字、アンダースコアのみを含み、最大63文字です。EmDashは、独自のルートとエントリーデータで使用される予約名も拒否します。
コレクションの動作
コレクション設定は、エディターと公開ページがエントリーをどのように使用するかを制御します:
- Routableは、エントリーを公開する前に公開スラッグを必要とします。URLパターンは、エントリースラッグまたはIDを公開日と組み合わせて、公開パスを生成できます。
- Draftsは、エディターが公開する前に作業を保存できるようにします。
- Revisionsは、コンテンツ履歴のスナップショットを保持します。
- Previewは、未公開コンテンツの署名付きプレビューURLを提供します。
- Searchは、検索可能としてマークされたフィールドの全文検索を有効にします。
- SEOは、タイトル、説明、画像のメタデータフィールドを追加し、コレクションをサイトマップに含めます。
- Edit lockingは、1人のエディターが作業している間エントリーを保持し、ロックが解除されるまで他のライターを拒否します。
- Commentsは、コレクションごとに有効にでき、モデレーションと自動クローズ設定があります。
- Groupは、コレクションを折りたたみ可能なサイドバーフォルダに配置します。同じグループのコレクションは1つのフォルダを共有し、最初のコレクションが表示される位置に配置されます。タクソノミーは、割り当てられたすべてのコレクションがそのフォルダに表示されるときにフォルダに参加します。
サイトが実際に使用する動作を有効にしてください。たとえば、プレビューを有効にするとプレビューURLが提供されますが、Astroページは依然としてエントリーとそのプレビュー状態を正しくレンダリングする必要があります。完全なフローについてはプレビューモードを参照してください。
フィールドタイプ
エディターが入力する値とアプリケーションコードがそれを受け取る方法のフィールドタイプを選択します。EmDashは17種類のフィールドタイプをサポートします:
| コンテンツの必要性 | フィールドタイプ | エディターが扱うもの |
|---|---|---|
| 短いまたは長いテキスト | string, text, slug, url | テキスト入力、テキストエリア、URL値 |
| 数値 | number, integer | 小数または整数入力 |
| 状態と時間 | boolean, datetime | スイッチまたは日時ピッカー |
| 固定選択肢 | select, multiSelect | 設定されたオプションから1つまたは複数の選択肢 |
| リッチまたは構造化データ | portableText, json, repeater, blocks | リッチテキスト、JSON、繰り返しグループ、または順序付けられたブロック構成 |
| メディア | image, file | メディアライブラリから選択されたアイテム |
| リレーションシップ | reference | 他のコレクションから選択されたエントリー |
タイプは、エディターコントロール以上のものです。EmDashが値を保存して検証する方法と、生成されたTypeScript宣言がそれを記述する方法も決定します。フィールドタイプリファレンスは、各タイプの値の形状とオプションをリストしています。
フィールドルール
すべてのカスタムフィールドには、ラベルとスラッグがあります。次のオプションは、その動作をさらに説明します:
- Requiredは、値なしでエントリーを保存することを防ぎます。
- Uniqueは、コレクション内の2つのエントリーが同じ値を使用することを防ぎます。
- Default valueは、適切な場合に開始値を提供します。
- Validationは、フィールドタイプに応じて、テキストの長さ、数値の範囲、パターン、選択肢、ファイルタイプ、またはリピーターの長さを制限できます。
- Searchableは、サポートされているテキストフィールドをコレクションの全文検索インデックスに含めます。
- Indexedは、サポートされているフィールドで並べ替えまたはフィルタリングするためのデータベースインデックスを作成します。
- Translatableは、各ロケールが独自の値を持つかどうかを制御します。翻訳不可能な値は、同じエントリーの翻訳間で共有されます。
そのカスタムフィールドでクエリが並べ替えまたはフィルタリングする場合は、Indexedをオンにしてください。インデックスは、データベースが一致するエントリーまたは順序付けられたエントリーを見つけるのに役立ちますが、追加のストレージを使用し、コンテンツが作成または更新されるたびに作業を追加します。ページがそれを表示するからといって、フィールドにインデックスを付けないでください。
インデックスは、string、url、number、integer、boolean、datetime、select、reference、slugフィールドで使用できます。リッチテキスト、JSON、リピーター、および複数選択値には、より複雑なデータが含まれており、この種類のインデックスを使用できません。
参照フィールドは、コレクション自体のテーブルに何も保存しません。ターゲットコレクションで構成し、フィールドが複数のエントリーをリンクする必要がある場合にのみ、複数の値を許可します。EmDashはリンクを別々に保持し、リンクされたエントリーをdataではなくreferencesの下に返すため、参照により、ターゲットエントリーをソースエントリーにコピーせずに、コードが関連コンテンツをロードまたは識別できます。保存された形状とターゲットコレクションのないフィールドの動作についてはreferenceを、それに関するワークフローについてはリレーションを参照してください。
後でフィールドを変更する
ラベル、検証、検索設定、インデックス、ウィジェットオプション、表示順序は、フィールドを置き換えることなく変更できます。フィールドを追加すると、既存のすべてのエントリーが保持されますが、サイトが期待する場合、それらのエントリーには新しいフィールドの値が必要です。
移行は、既存の値を変換し、モデルを更新し、デプロイ中に古いアプリケーションコードと新しいアプリケーションコードの互換性を保つ必要があります。これらの変更のいずれかを行う前に、デプロイされたサイトのスキーマの進化に従ってください。
関連タスク
エントリーを作成して公開するにはコンテンツの操作を使用してください。フィルタリングと並べ替えを行うにはコンテンツのクエリを使用してください。生成されたタイプとシードファイルについてはコンテンツモデルをお読みください。