內容片段延伸了標準資產;請參閱:
內容片段的基本組成部分為:
視片段類型而定,也會使用模型或範本:
現在建議 建立內容片段模型以建立所有片段。
We.Retail中的所有範例都使用內容片段模型。
內容片段模型:
對現有內容片段模型所做的任何變更都會影響相關片段;這會導致這些片段中的孤立屬性。
內容片段範本:
內容片段管理(CFM)是AEM資產的一部份,其格式為:
具有結構化內容的內容片段(即基於內容片段模型)被映射到單一資產:
所有內容都儲存在資產的jcr:content/data
節點下:
元素資料儲存在主子節點下:
jcr:content/data/master
變數會儲存在子節點下,子節點會攜帶變數的名稱:
例如,jcr:content/data/myvariation
每個元素的資料作為具有元素名稱的屬性儲存在相應的子節點中:
例如,元素text
的內容儲存為jcr:content/data/master
上的屬性text
中繼資料和相關內容會儲存在jcr:content/metadata
下方
除標題和說明外,標題和說明不被視為傳統中繼資料,並儲存在
jcr:content
簡單內容片段(以範本為基礎)會對應至由主要資產和(選用)子資產組成的組合:
片段的所有非內容資訊(例如標題、說明、中繼資料、結構)都會專門管理在主資產上。
片段的第一元素的內容被映射到主資產的原始格式副本。
其他元素(如果現有)會對應至主要資產的子資產。
與標準資產一樣,內容片段的持有方式如下:
/content/dam
如需詳細資訊,請參閱內容片段——刪除考量事項。
您可從AEM頁面參考內容片段,就像任何其他資產類型一樣。 AEM提供內容片段核心元件 - 元件,可讓您將內容片段包含在您的頁面上。 您也可以延伸此內容片段核心元件。
元件使用fragmentPath
屬性來引用實際內容片段。 fragmentPath
屬性的處理方式與其他資產類型的相似屬性相同;例如,當內容片段移至其他位置時。
該元件允許您選擇要顯示的變化。
此外,還可以選擇一系列段落來限制輸出;例如,這可用於多欄輸出。
該元件允許in-between content :
此元件可讓您放置其他資產(影像等) 在引用片段的段落之間。
對於中介內容,您需要:
內容片段模型:
當使用以頁面上的內容片段模型為基礎的內容片段時,會參考模型。 這表示如果模型在您發佈頁面時尚未發佈,則會標籤此模型,並將模型新增至要隨頁面一起發佈的資源。
內容片段範本:
當使用以頁面上的內容片段範本為基礎的內容片段時,建立片段時,沒有範本複製時的參考。
例如,內容片段的後端實作負責讓頁面上使用的片段執行個體可供搜尋,或管理混合媒體內容。 此實作需要知道哪些元件用於轉換片段,以及轉換的參數化方式。
此參數可在Web控制台中配置,用於OSGi捆綁內容片段元件配置。
資源
類型清單
sling:resourceTypes
可用來定義用於呈現內容片段的元件,以及應套用背景處理的元件。
參考
屬性可以配置屬性清單,以指定對相應元件的片段的參考儲存位置。
屬性和元件類型之間沒有直接映射。
AEM只會擷取可在段落上找到的第一個屬性。 因此,您應謹慎選擇屬性。
您仍需遵循一些准則,以確保元件與內容片段背景處理相容:
定義要呈現的元素的屬性名稱必須為element
或elementNames
。
定義要呈現的變數的屬性名稱必須是variation
或variationName
。
如果支援多個元素的輸出(通過使用elementNames
指定多個元素),則實際顯示模式由屬性displayMode
定義:
singleText
(且只設定了一個元素),則元素會呈現為文字,內含內容、版面支援等。 這是僅呈現單一元素之片段的預設值。如果為displayMode
== singleText
(隱式或顯式)呈現片段,則會播放以下附加屬性:
paragraphScope
定義是否應呈現所有段落或僅呈現一系列段落(值: all
與 range
)
如果paragraphScope
== range
,則屬性paragraphRange
定義要呈現的段落範圍
內容片段可與下列項目整合:
翻譯
內容片段與AEM轉譯工作流程完全整合。 在建築層面,這意味著:
內容片段的個別翻譯實際上是分開的片段;例如:
它們位於不同的語言根系下:
/content/dam/<path>/en/<to>/<fragment>
與
/content/dam/<path>/de/<to>/<fragment>
但它們在語言根目錄下的相對路徑完全相同:
/content/dam/<path>/en/<to>/<fragment>
與
/content/dam/<path>/de/<to>/<fragment>
除了基於規則的路徑外,內容片段的不同語言版本之間沒有進一步的聯繫;雖然UI提供在語言變數之間導覽的方式,但是它們會以兩個不同的片段處理。
AEM轉譯工作流程可搭配/content
使用:
由於內容片段模型位於/conf
中,因此這些轉換中不包括這些模型。 您可以國際化UI字串。
範本會複製以建立片段,因此會隱含。
中繼資料結構
內容片段(re)使用中繼資料結構,可以與標準資產一起定義。
CFM提供其專屬的特定架構:
/libs/dam/content/schemaeditors/forms/contentfragment
如有需要,可加以擴充。
各個模式表單與片段編輯器整合。
您可以使用伺服器端API來存取您的內容片段;請參閱:
強烈建議您使用伺服器端API,而非直接存取內容結構。
以下三個介面可用作入口點:
片段範本 (FragmentTemplate)
使用FragmentTemplate.createFragment()
建立新片段。
Resource templateOrModelRsc = resourceResolver.getResource("...");
FragmentTemplate tpl = templateOrModelRsc.adaptTo(FragmentTemplate.class);
ContentFragment newFragment = tpl.createFragment(parentRsc, "A fragment name", "A fragment description.");
此介面代表:
這些資訊包括:
存取基本資料(標題、說明)
存取片段元素的範本/模型:
ElementTemplate
)存取片段變化的範本:
VariationTemplate
)取得初始相關內容
代表重要資訊的介面:
ElementTemplate
VariationTemplate
內容片段 (ContentFragment)
此介面可讓您以抽象方式處理內容片段。
強烈建議通過此介面訪問片段。 應避免直接更改內容結構。
此介面提供您以下方式:
管理基本資料(例如:取得名稱;get/set title/description)
存取中繼資料
存取元素:
清單元素
依名稱取得元素
建立新元素(請參閱Panuons)
存取元素資料(請參閱ContentElement
)
為片段定義的清單變化
全域建立新變化
管理相關內容:
存取片段的模型或範本
代表片段主要元素的介面包括:
內容元素 (ContentElement)
內容變化 (ContentVariation)
這3個介面(ContentFragment
、ContentElement
、ContentVariation
)都擴充了Versionable
介面,其中新增了內容片段所需的版本控制功能:
可調整下列項目:
ContentFragment
可適用於:
Resource
-基礎Sling資源;請注意,直接更新基 Resource
礎對象需要重建 ContentFragment
對象。
Asset
-代表內 Asset
容片段的DAM抽象化;請注意,直接更 Asset
新需要重建對 ContentFragment
像。
ContentElement
可適用於:
ElementTemplate
-用於訪問元素的結構資訊。FragmentTemplate
可適用於:
Resource
-確 Resource
定所複製的參考模型或原始模板;
Resource
所做的變更不會自動反映在FragmentTemplate
中。Resource
可適用於:
ContentFragment
FragmentTemplate
應當指出:
實作API以提供UI支援的功能。
整個API的設計目的是自動not保留變更(除非API JavaDoc另有說明)。 因此,您必須始終提交各個請求(或實際使用的解析程式)的資源解析程式。
可能需要額外努力的任務:
建立/移除新元素不會更新簡單片段的資料結構(以片段範本為基礎)。
從ContentElement
建立新變數不會更新資料結構(但從ContentFragment
全域建立變數)。
移除現有變數不會更新資料結構。
對於AEM 6.5,用戶端API是內部的。
請參閱下列內容:
filter.xml
內容片段管理的filter.xml
已設定為不會與Assets核心內容套件重疊。
當用戶在其中一個編輯器頁面中開啟內容片段時,開始編輯會話。 當用戶離開編輯器時,通過選擇保存或取消完成編輯會話。
控制編輯會話的要求包括:
所涉及的流程包括:
啟動會話
完成作業
自動儲存已停止。
提交時:
回滾時:
編輯
可能的動作包括:
輸入頁面
檢查是否已存在編輯會話;透過檢查個別Cookie。
如果存在,請確認正在編輯的內容片段的編輯會話已啟動
如果不存在編輯會話,請等待用戶進行的第一次更改(請參見下面)。
檢查頁面上是否已參考內容片段,若已參考則顯示適當資訊。
內容變更
離開頁面
若要達成此目的,您可以將代表API的資源調整為:
com.adobe.cq.dam.cfm.ContentFragment
例如:
// first, get the resource
Resource fragmentResource = resourceResolver.getResource("/content/dam/fragments/my-fragment");
// then adapt it
if (fragmentResource != null) {
ContentFragment fragment = fragmentResource.adaptTo(ContentFragment.class);
// the resource is now accessible through the API
}
若要以程式設計方式建立新的內容片段,您必須使用:
com.adobe.cq.dam.cfm.ContentFragmentManager#create
例如:
Resource templateOrModelRsc = resourceResolver.getResource("...");
FragmentTemplate tpl = templateOrModelRsc.adaptTo(FragmentTemplate.class);
ContentFragment newFragment = tpl.createFragment(parentRsc, "A fragment name", "A fragment description.");
可使用配置管理器(ConfMgr)定義自動保存間隔(以秒為單位):
節點:<*conf-root*>/settings/dam/cfm/jcr:content
屬性名稱: autoSaveInterval
類型: Long
預設值:600
(10分鐘);此定義於/libs/settings/dam/cfm/jcr:content
如果要設定5分鐘的自動儲存間隔,您需要在節點上定義屬性;例如:
節點:/conf/global/settings/dam/cfm/jcr:content
屬性名稱: autoSaveInterval
類型: Long
值:300
(5分鐘等於300秒)
如需完整資訊,請參閱內容片段範本。
如需詳細資訊,請參閱