集合與欄位

本頁內容

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

管理員在內容類型中管理集合。種子檔案可以在從設定配置站台或環境時定義相同的集合設定。

集合識別

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

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

import { getEmDashCollection } from "emdash";

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

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

集合行為

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

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

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

欄位類型

根據編輯者輸入的值和應用程式碼接收的方式選擇欄位類型。EmDash 支援 16 種欄位類型:

內容需求欄位類型編輯者使用的控制項
短文字或長文字stringtextslugurl文字輸入、文字區域和 URL 值
數字numberinteger小數或整數輸入
狀態和時間booleandatetime開關或日期時間選擇器
固定選項selectmultiSelect從設定選項中單選或多選
富文字或結構化資料portableTextjsonrepeater富文字、JSON 或子欄位的重複群組
媒體imagefile從媒體庫中選擇的項目
關係reference從另一個集合中選擇的條目

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

欄位規則

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

  • 必填阻止在沒有值的情況下儲存條目。
  • 唯一阻止集合中的兩個條目使用相同的值。
  • 預設值在適當時提供起始值。
  • 驗證可以根據欄位類型限制文字長度、數字範圍、模式、選項、檔案類型或重複器長度。
  • 可搜尋將支援的文字欄位包含在集合的全文搜尋索引中。
  • 已索引為支援的欄位上的排序或篩選建立資料庫索引。
  • 可翻譯控制每個地區設定是否有自己的值。不可翻譯的值在同一條目的翻譯之間共享。

當查詢按該自訂欄位排序或篩選時,開啟已索引。索引幫助資料庫找到匹配或排序的條目,但會使用額外儲存,並在每次建立或更新內容時增加工作量。不要僅僅因為頁面顯示了某個欄位就為其建立索引。

索引可用於 stringurlnumberintegerbooleandatetimeselectreferenceslug 欄位。富文字、JSON、重複器和多選值包含更複雜的資料,無法使用這種索引。

參照儲存目標條目的 ID。使用目標集合設定參照,僅當欄位需要保存多個條目 ID 時才啟用多值。參照允許程式碼載入或識別相關內容;它不會將目標條目複製到來源條目中。

後續變更欄位

標籤、驗證、搜尋設定、索引、小工具選項和顯示順序可以在不替換欄位的情況下變更。新增欄位會保留每個現有條目,但如果站台期望某個值,這些條目將需要新欄位的值。

遷移必須轉換現有值、更新模型,並在部署期間保持舊應用程式碼和新應用程式碼的相容性。在進行此類變更之前,請遵循部署站台的結構描述演進

相關工作

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