[AEM Sites]{class="badge positive" title="適用於AEM Sites)。"}

定義內容片段模型 defining-content-fragment-models

Adobe Experience Manager (AEM) as a Cloud Service中的內容片段模型定義內容片段的內容結構。 這些片段隨後可用於頁面製作,或用作Headless內容的基礎。

本頁涵蓋如何使用專用編輯器定義您的內容片段模式。 請參閱管理您的內容片段模式,瞭解建立片段後可用的進一步工作與選項,包括內容片段主控台可用的動作、允許在資料夾上建立模式以及發佈模式。

NOTE
使用您的內容片段模型和內容片段時,請留意最佳實務。
CAUTION
如果您要查詢多個引用的片段,則建議不要讓您的各種片段模式具有名稱相同,但型別不同的欄位名稱。
如需詳細資訊,請參閱搭配內容片段使用的AEM GraphQL API — 限制
NOTE
如果您使用此新編輯器建立模型,您應該一律將此編輯器用於該模型。
如果您接著使用原始模型編輯器開啟模型,您會看到訊息:
  • 「此模型已設定自訂UI結構描述。 此UI中顯示的欄位順序可能與UI結構描述不相符。 若要檢視與UI結構描述對齊的欄位,您必須切換到新的內容片段編輯器。」

定義內容片段模型 defining-your-content-fragment-model

內容片段模式透過選擇​資料型別,有效地定義了結果內容片段的結構。 使用模型編輯器,您可以新增資料型別的例項,然後將其設定以建立必填欄位:

CAUTION
編輯現有內容片段已使用的模型可能會影響這些相依片段。
  1. 在內容片段主控台中,選取內容片段模式的面板,並導覽至儲存您的內容片段模式的資料夾。

    note
    NOTE
    您也可以在建立模型後直接開啟模型。
  2. 開啟​ 編輯 ​所需的模型;使用其中一個快速動作連結,或選取模型,然後從工具列選取動作。

    屬性

    開啟模型編輯器後,會顯示:

    • 上:

      • 首頁​圖示
      • 在原始與新編輯器之間切換的選項
      • 取消
      • 儲存
    • 左: 資料型別​可用於建立欄位

    • 中間:欄位已與​ 新增 ​選項一起定義

    • 右:使用最右側的圖示,您可在以下兩者之間選取:

      • 屬性:定義並檢視所選欄位的屬性
      • 模型詳細資料:顯示​ 已啟用 ​狀態、模型標題、標籤、描述​和​預覽URL
  3. 新增欄位

    • 可以:

      • 將資料型別從左側面板拖曳至中間面板中欄位的必要位置。
      • 依資料型別選取​ + ​圖示以將其新增至欄位清單底部。
      • 在中間面板中選取「新增」,然後從產生的下拉式清單中選取所需的資料型別,以在清單底部新增欄位。
      note
      NOTE
      索引標籤預留位置​欄位必須一律顯示在現有欄位上方。
    • 您可以使用欄位方塊左側的點狀結構來重新定位欄位:

      移動欄位

    • 將欄位新增至模型(且已選取)後,右側面板會顯示可針對該特定資料型別定義的​屬性。 您可以在此處定義特定的
      欄位。

      • 許多屬性不言自明,如需詳細資訊,請參閱屬性(資料型別)。

      • 輸入​ 欄位標籤 ​會自動完成​屬性名稱 (如果空白),之後可以手動更新。

        note caution
        CAUTION
        手動更新資料型別的屬性​ Property Name ​時,名稱必須僅包含​個 A-Z、a-z、0-9和下劃線「_」作為特殊字元。
        如果在舊版AEM中建立的模型包含非法字元,請移除或更新這些字元。

      例如:

      欄位屬性

      note
      NOTE
      當欄位定義為​ 必要 ​時,中間窗格中標示的​ 標籤 ​會標示為字元(*)。
  4. 移除欄位

    選取中間面板中適當欄位的垃圾桶圖示。

    移除

  5. 新增所有必要欄位,並視需要定義相關屬性。

  6. 選取​ 儲存 ​以保留定義。

資料類型 data-types

定義模型時可選用多種資料型別:

  • 單行文字

    • 為單行文字新增欄位;可以定義最大長度
    • 欄位可設定為允許片段作者建立欄位的新執行個體
  • 多行文字

    • 可能是RTF、純文字或Markdown的文字區域
    • 欄位可設定為允許片段作者建立欄位的新執行個體
    note
    NOTE
    文字區域是否為RTF、純文字或Markdown,是由屬性​ 預設型別 ​在模型中定義。
    此格式無法從內容片段編輯器變更,只能從模型變更。
  • 數字

    • 新增數值欄位
    • 欄位可設定為允許片段作者建立欄位的新執行個體
  • 布林值

    • 新增布林值核取方塊
  • 日期和時間

    • 新增日期和/或時間欄位
  • 分項清單

    • 新增一組核取方塊、選項按鈕或下拉式清單欄位
      • 您可以指定片段作者可用的選項
  • 標籤

    • 允許片段作者存取及選取標籤區域
  • 片段參考

    • 參考其他內容片段;可用於建立巢狀內容

    • 可以設定此資料類型以允許片段作者:

      • 直接編輯參考的片段。
      • 根據適當的模式建立新的內容片段
      • 建立欄位的新執行個體
    • 參考指定參考資源的路徑;例如/content/dam/path/to/resource

  • 內容參考

    • 參考任何型別的其他內容;可用於建立巢狀內容
    • 如果參照了影像,您可以選擇顯示縮圖
    • 欄位可設定為允許片段作者建立欄位的新執行個體
    • 參考指定參考資源的路徑;例如/content/dam/path/to/resource
  • 複合

    • 複合​資料型別可用於建立巢狀內容

    • 複合​資料型別可讓內容片段儲存階層式結構化資料

      • 這是透過允許欄位包含巢狀子欄位來達成
      • 子欄位會進行結構化
      • 子欄位會根據內容片段模式進行結構化
      • 子欄位限製為您在定義子欄位時指定的內容片段模式
    • 此功能提供一種在單一片段中建立複雜資料結構模型的方法,類似於JSON中的巢狀物件或NoSQL資料庫中的內嵌檔案

    note warning
    WARNING
    複合資料型別可用於:
    • 在Touch UI (原始)內容片段模型編輯器中
    • 在新的內容片段編輯器中
    新的內容片段模式編輯器和觸控式UI (原始)內容片段編輯器將封鎖對複合資料型別和任何相依欄位的存取。
    對於新內容片段模型編輯器中的複合欄位,您會看到訊息:請為「複合」型別註冊轉譯器。
  • JSON物件

    • 允許內容片段作者在片段的對應元素中輸入JSON語法。

      • 允許AEM儲存您從其他服務複製/貼上的直接JSON。
      • JSON會傳遞,並在GraphQL中輸出為JSON。
      • 在內容片段編輯器中包括JSON語法醒目提示、自動完成和錯誤醒目提示。
  • 索引標籤預留位置

    • 允許引進索引標籤,以在編輯內容片段內容時使用。

      • 這些在模型編輯器中顯示為分隔線,分隔內容資料型別清單的區段。 每個例項代表新索引標籤的開始。
      • 在片段編輯器中,每個例項都會顯示為一個索引標籤。
      note
      NOTE
      此資料型別僅用於格式設定,AEM GraphQL結構描述會忽略此資料型別。
      索引標籤預留位置​欄位必須一律顯示在現有欄位上方。

屬性(資料型別) properties

許多屬性的含義一目瞭然,對於某些屬性,其他詳細資訊如下:

  • 屬性名稱

    手動更新資料型別的這個屬性時,名稱​ 必須 ​僅包含​個 A-Z、a-z、0-9和下劃線「_」作為特殊字元。

    note caution
    CAUTION
    如果在舊版AEM中建立的模型包含非法字元,請移除或更新這些字元。
  • 呈現為

    在片段中實現/轉譯欄位的各種選項。 這通常可讓您定義作者將看到欄位的單一例項,還是允許建立多個例項。 使用​ 多個欄位 ​時,您可以定義專案的最小和最大數量 — 如需詳細資訊,請參閱驗證。

  • 欄位標籤
    輸入​ 欄位標籤 ​會自動產生​屬性名稱,然後可視需要手動更新。

  • 驗證
    基本驗證可由機制使用,例如​ Required ​屬性。 有些資料型別有額外的驗證欄位。 如需詳細資訊,請參閱驗證。

  • 對於「多行」 資料類型 ,可將「預設類型 ​​」定義為:

    • RTF 文字
    • Markdown
    • 純文字

    如果未指定,此欄位會使用預設值​RTF。

    在內容片段模型中變更​預設型別,只會在編輯器中開啟並儲存該片段後,對現有、相關的內容片段生效。

  • 唯一
    從目前模型建立的所有內容片段內容(適用於特定欄位)必須是唯一的。

    這是為了確保內容作者無法重複已新增至相同模型其他片段中的內容。

    例如,內容片段模型中名為Country的​ 單行文字 ​欄位在兩個相依的內容片段中不能有值Japan。 嘗試第二個執行個體時會發出警告。

    note
    NOTE
    確保每個語言根的唯一性。
    note
    NOTE
    變數可以有與相同片段變數相同的​ 唯一 ​值,但與其他片段變數中使用的值不同。
  • 如需特定資料型別及其屬性的詳細資訊,請參閱​內容參考。

  • 如需特定資料型別及其屬性的詳細資訊,請參閱​片段參考。

  • 可翻譯

    核取內容片段模型編輯器中欄位上的​ 可翻譯 ​核取方塊將:

    • 確認欄位的屬性名稱已新增至翻譯組態,內容/content/dam/<sites-configuration> (如果尚未存在)。
    • 對於GraphQL:將內容片段欄位上的<translatable>屬性設定為yes,以允許GraphQL查詢篩選僅包含可翻譯內容的JSON輸出。

驗證 validation

各種資料型別現在包含定義在結果片段中輸入內容時適用的驗證需求的可能性:

  • 單行文字

    • 與預先定義的規則運算式比較。
  • 數字

    • 檢查特定值。
  • 內容參考

    • 測試特定型別的內容。
    • 只能參考指定檔案大小或更小的資產。
    • 只能參考預先定義的寬度和/或高度範圍(以畫素為單位)內的影像。
  • 片段參考

    • 測試特定內容片段模型。
  • 最小專案數 / 最大專案數

    已定義為​多個欄位 (以​ Render As ​設定)的欄位具有選項:

    • 最小專案數
    • 最大專案數

    已在內容片段編輯器中驗證這些專案。

巢狀內容 nested-content

內容片段可以使用以下任何資料型別來形成巢狀內容:

  • 內容參考

    • 提供其他內容的簡單參照;任何型別。
    • 由​ 內容參考 ​資料型別提供
    • 可以為一個或多個參考(在產生的片段中)設定。
  • 片段參考

    • 參考其他片段,視指定的模型而定。

    • 參照的片段與參照的片段不同且獨立。

    • 由​ 片段參考 ​資料型別提供。

    • 可讓您包含/擷取結構化資料。

      note
      NOTE
      當您透過GraphQL🔗使用內容片段的Headless內容傳遞時,此方法特別令人感興趣。
    • 可以為一個或多個參考(在產生的片段中)設定。

    • 適合需要模組化、可重複使用的內容。

  • 複合資料型別:

    • 參考其他片段,視指定的模型而定。
    • 參考片段已完全內嵌在參考片段中且完整。 它們具有真正的父子關係。
      • 複合資料型別可讓您將一組欄位定義為父片段內的內嵌、可重複結構,而不是指向個別片段參考。
    • 複合欄位會在與父片段相同的編輯器工作階段中編輯。
    • 可讓您包含/擷取結構化資料。
    • 適合模組化重複使用不是主要目標的多值複合欄位。
    • 能夠使用更平坦、更易於管理的內容結構,也可協助改善系統和API效能。
NOTE
AEM針對下列專案提供週期性保護:
  • 內容參考
    這可防止使用者新增對目前片段的引用,並可能導致空白的片段引用選取器對話方塊。

  • GraphQL中的片段參考
    如果您建立深層查詢,且該查詢傳回多個互相參照的內容片段,則它會在第一次出現時傳回null。

CAUTION
如果要查詢多個引用的片段,則建議不要讓各種片段模式具有名稱相同,但型別不同的欄位名稱。
如需詳細資訊,請參閱搭配內容片段使用的AEM GraphQL API — 限制

內容參考 content-reference

內容參考​資料型別可讓您轉譯來自其他來源的內容;例如,影像、頁面或體驗片段。

除了標準屬性之外,您還可以指定:

  • 根路徑,指定或代表要儲存任何參考內容的位置

    note
    NOTE
    如果您想在使用內容片段編輯器時直接在此欄位上傳和參考影像,則必須使用此選項。
    如需詳細資訊,請參閱參考影像。
  • 可參考的內容型別

    note
    NOTE
    如果您想要在使用內容片段編輯器時直接上傳和參考此欄位中的影像,這些必須包含​影像。
    如需詳細資訊,請參閱參考影像。
  • 檔案大小限制

  • 如果參照影像:

    • 顯示縮圖
    • 影像高度和寬度的限制

內容參考

片段參考 fragment-reference

片段參考​資料型別可以參考一或多個內容片段。 此功能可讓您擷取多個圖層的結構化資料,在擷取應用程式中使用的內容時特別感興趣。

例如:

  • 定義員工詳細資訊的模型;包括:
    • 定義僱主(公司)的模型參考
type EmployeeModel {
    name: String
    firstName: String
    company: CompanyModel
}

type CompanyModel {
    name: String
    street: String
    city: String
}
NOTE
片段參考對搭配GraphQL🔗使用內容片段的Headless內容傳遞特別感興趣。

除了標準屬性之外,您還可以定義:

  • 呈現為:

    • 多個欄位 — 片段作者可以建立多個個別參考

    • 片段參考 — 允許片段作者選取片段的單一參考

  • 模型型別
    可選取多個模型。 將參照新增至內容片段時,任何參照的片段都必須使用這些模型建立。

  • 根路徑
    這會指定或表示任何參考片段的根路徑。

  • 允許建立片段

    如此可讓片段作者根據適當的模型建立片段。

    片段參考

NOTE
已建立重複保護機制。 它禁止使用者在片段參考中選取目前的內容片段,並可能導致空白的片段參考選擇器對話方塊。
GraphQL中也有片段參考的週期性保護。 如果您在兩個互相參照的內容片段間建立深層查詢,則會傳回null。

複合資料 composite-data

Composite​資料型別允許欄位包含巢狀子欄位,讓內容片段儲存階層式結構化資料。 子項 (子欄位)本身是結構化內容,由使用者指定的內容片段模型定義並完全內嵌在​ 父項 ​片段中。

「複合」資料型別提供一種在單一片段中建立複雜資料結構模型的方法,類似於JSON中的巢狀物件或NoSQL資料庫中的內嵌檔案。

「複合」欄位具有下列屬性和特性:

  • 指定一或多個內容片段模型

    • 在內容片段模型中定義複合欄位時,您必須定義哪些模型可用於複合專案。
    • 可以選取多個模型,讓作者可以在實際新增專案時,選擇要使用的模型。
  • 製作

    • 複合專案在與父片段相同的編輯器工作階段中進行編輯,而不開啟單獨的內容片段。
  • 以多欄位形式逐步重複

    • 多值複合支援專案的新增、移除和重新排序。
  • 多模型複合

    • 單一複合欄位可接受來自多個允許模型的專案。
    • 作者挑選在新增專案時要使用的模型。
  • 變化

    • 最上層變數適用於複合樹狀結構:變數可能與主要專案具有不同的複合專案數量,或每個專案的內容不同。
    • 選取範圍僅位於頂層;巢狀內容會反映選取的變數。
  • 搜尋

    • 複合專案中的文字是可搜尋的。 相符的內容會在搜尋結果中傳回父內容片段。
  • 原生傳遞

    • GraphQL和OpenAPI會傳回複合內容作為父裝載中的巢狀資料,而不會解析單獨的內容片段資產。
  • 清除參考語意

    • 您可以為屬於其父項的內容建立模型,而不會重複使用。

      note
      NOTE
      預留真正可重複使用內容的片段參考。 兩者互補,而非互補。

除了標準屬性之外,您還可以定義:

  • 呈現為

    指定下列其中一項:

    • 多個欄位​支援以最小值/最大值限制新增/移除/重新排序
    • 複合欄位​最多保留一個專案
  • 最小/最大專案數

    對於多值組合,設定專案數的最小和最大界限

  • 類型

    指定一或多個內容片段模型。 這些模型中的欄位將顯示為複合專案。 可選取多個模型,然後作者在新增專案時選擇模型。

NOTE
雖然複合欄位的內容是根據內容片段模式而建構的,但由於缺少某些中繼資料,這些內容片段實際上並未形成內容片段。
WARNING
複合資料型別可用於:
新的內容片段模式編輯器和觸控式UI (原始)內容片段編輯器將封鎖對複合資料型別和任何相依欄位的存取。
對於新內容片段模型編輯器中的複合欄位,您會看到訊息:請為「複合」型別註冊轉譯器。

複合的優點 benefits-of-composite

複合資料型別在資料模型化時可提供數個優點:

  • 更輕鬆地管理內容結構。

    • 由於複合資料型別直接內嵌在內容片段中,因此不需要依參考片段的要求管理複合內容的個別資料夾或儲存結構。
    • 如此可產生較平坦、較不雜亂的內容結構,進而簡化控管並更容易發現複合內容。
  • 透過多值複合欄位的原生支援,簡化撰寫工作。

    • 多值複合中的專案可以在與父片段相同的編輯器工作階段中建立和編輯。
    • 複合可減少參考和片段中繼資料的額外負荷。
  • 改善內容管理和傳遞效能。

    • 使用較少片段參照的簡單內容結構,可減少編寫、發佈和傳送作業期間的參照解析額外負荷。
    • 更簡單的內容結構也會減少JSON裝載的大小和複雜性,有助於提高API效率和整體使用者端效能。

何時使用複合 when-to-use-composite

應謹慎考慮使用複合資料型別,因為您的使用案例可以確定哪種巢狀內容排序最適合您。

  • 建議您在下列情況下使用:

    • 建置​ 頁面式 ​或​ 卡片清單式 ​內容,子項不會在其他地方重複使用。
    • 在傳遞或發佈期間遇到參考圖表效能問題。
    • 讓作者抱怨巢狀內容的索引標籤切換工作流程。
    • 需要目前需要自訂資料型別或外部工具的多欄位逐步和重複群組。
  • 發生下列情況時請小心:

    • 您的內容可跨片段真正重複使用。 片段參考仍為共用內容的正確答案;複合適用於內嵌內容。
    • 您只使用(原始)觸控式UI編輯器。 新內容片段編輯器支援複合功能,但原始觸控式UI編輯器將封鎖複合欄位的編輯。

複合的限制 limitations-of-composite

下列清單整合了「複合」資料型別的目前限制:

  • 製作表面

    • Touch UI片段編輯器(原始編輯器)
      • 不支援複合欄位。
    • 全新(Headless)內容片段模式編輯器
      • 尚未支援複合型別。 模型製作使用原始的觸控式UI模型編輯器。
        對於複合欄位,您會看到訊息:請為「複合」型別註冊轉譯器。
  • 跨功能支援

    • MSM (多站點管理員)

      • 頂層欄位的繼承只能中斷。

        • 可以中斷整個複合欄位的繼承。
        • 不支援中斷複合專案中個別欄位的繼承。
    • 啟動

      • 不論是直接選取或透過片段參考納入,啟動均不支援包含複合欄位的內容片段。 此類動作不被接受,將失敗。
    • 核心元件和Sling模型匯出工具

      • 透過核心元件和Sling模型匯出程式(.model.json)呈現的頁面尚不支援複合欄位。
    • 視覺化內容片段(包含HTML範本的內容片段)

      • 視覺化內容片段(包含HTML範本的內容片段)目前不支援複合欄位。
recommendation-more-help
experience-manager-cloud-service-help-main-toc