集合和欄位

本頁內容

集合定義了一種內容類型以及編輯者用於建立它的表單。其欄位定義每個條目可以包含的值。例如,產品集合可以包含標題、價格、描述、產品圖片以及對品牌條目的參照。

管理員在內容類型下管理集合。當從設定建立網站或環境時,種子檔案可以定義相同的集合設定。

集合識別

每個集合都有一個複數標籤、一個選擇性的單數標籤和一個 slug。標籤顯示在管理面板中。slug 在查詢、API 路由、種子檔案和資料庫中識別集合。

例如,標記為部落格文章的集合可以使用部落格文章作為其單數標籤,使用 posts 作為其 slug。然後 Astro 程式碼透過該 slug 查詢它:

import { getEmDashCollection } from "emdash";

const { entries: posts } = await getEmDashCollection("posts");

在建立集合之前選擇 slug。管理面板稍後不會重新命名集合 slug 或欄位 slug,因為現有查詢和儲存的欄依賴於它們。slug 以小寫字母開頭,僅包含小寫字母、數字和底線,最多 63 個字元。EmDash 還會拒絕其自己的路由和條目資料使用的保留名稱。

集合行為

集合設定控制編輯者和公開頁面如何使用條目:

  • Routable 要求在條目可以發布之前有一個公開 slug。URL 模式可以將條目 slug 或 ID 與其發布日期組合以生成公開路徑。
  • Drafts 允許編輯者在發布之前儲存工作。
  • Revisions 保留內容歷史記錄的快照。
  • Preview 為未發布的內容提供簽名的預覽 URL。
  • Search 為標記為可搜尋的欄位啟用全文搜尋。
  • SEO 新增標題、描述和圖片中繼資料欄位,並將集合包含在網站地圖中。
  • Edit locking 在一個編輯者工作時保持條目鎖定,並拒絕其他作者直到鎖定釋放。
  • Comments 可以按集合啟用,具有審核和自動關閉設定。
  • Group 將集合放置在可摺疊的側邊欄資料夾中。具有相同群組的集合共享一個資料夾,定位在其中第一個出現的位置。當指派給它的每個集合都顯示在該資料夾中時,分類法加入該資料夾。

啟用網站實際使用的行為。例如,開啟預覽會提供預覽 URL,但 Astro 頁面仍必須正確呈現條目及其預覽狀態。有關完整流程,請參閱預覽模式。

欄位類型

為編輯者輸入的值以及應用程式程式碼接收它的方式選擇欄位類型。EmDash 支援 17 種欄位類型:

內容需求欄位類型編輯者使用的內容
短文字或長文字string, text, slug, url文字輸入、文字區域和 URL 值
數字number, integer十進位或整數輸入
狀態和時間boolean, datetime開關或日期時間選擇器
固定選項select, multiSelect從設定的選項中選擇一個或多個
富文字或結構化資料portableText, json, repeater, blocks富文字、JSON、重複群組或有序區塊組合
媒體image, file從媒體庫中選擇的項目
關係reference從另一個集合中選擇的條目

類型不僅僅是編輯器控制項。它還決定 EmDash 如何儲存和驗證值,以及產生的 TypeScript 宣告如何描述它。欄位類型參考列出了每種類型的值形狀和選項。

欄位規則

每個自訂欄位都有一個標籤和一個 slug。以下選項進一步描述其行為:

  • Required 防止在沒有值的情況下儲存條目。
  • Unique 防止集合中的兩個條目使用相同的值。
  • Default value 在適當時提供起始值。
  • Validation 可以根據欄位類型限制文字長度、數字範圍、模式、選擇、檔案類型或重複器長度。
  • Searchable 將支援的文字欄位包含在集合的全文搜尋索引中。
  • Indexed 為在支援的欄位上排序或篩選建立資料庫索引。
  • Translatable 控制每個語言環境是否有自己的值。不可翻譯的值在同一條目的翻譯之間共享。

當查詢按該自訂欄位排序或篩選時,開啟 Indexed。索引幫助資料庫尋找符合或有序的條目,但它使用額外的儲存空間,並在建立或更新內容時增加工作。不要僅僅因為頁面顯示它就索引欄位。

索引可用於 string、url、number、integer、boolean、datetime、select、reference 和 slug 欄位。富文字、JSON、重複器和多選值包含更複雜的資料,無法使用這種類型的索引。

參照欄位不在集合自己的表中儲存任何內容。使用目標集合設定它,僅當欄位應連結多個條目時才允許多個值。EmDash 單獨保留連結,並在 references 下而不是在 data 中傳回連結的條目,因此參照允許程式碼載入或識別相關內容,而無需將目標條目複製到來源條目中。有關儲存形狀和沒有目標集合的欄位行為,請參閱 reference,有關相關工作流程,請參閱關係。

稍後變更欄位

標籤、驗證、搜尋設定、索引、小工具選項和顯示順序可以在不取代欄位的情況下變更。新增欄位會保留每個現有條目,儘管如果網站期望一個值,那些條目需要新欄位的值。

遷移必須轉換現有值、更新模型,並在部署期間保持舊應用程式程式碼和新應用程式程式碼相容。在進行這些變更之一之前,請遵循演化已部署網站的架構。

相關任務

使用處理內容建立和發布條目。使用查詢內容篩選和排序它們。閱讀內容模型了解產生的類型和種子檔案。