コンテンツフラグメント用コンポーネント components-for-content-fragments
フラグメントオーサリング用コンポーネント components-for-fragment-authoring
コンテンツフラグメント管理 API - クライアントサイドを参照してください。
ページオーサリング用コンポーネント components-for-page-authoring
Adobe Experience Manager(AEM)のコンテンツフラグメントは、ページに依存しないアセットとして作成および管理されます。これにより、チャネルに依存しないコンテンツを様々なバリエーション(チャネル固有)で作成できます。その後、コンテンツページの作成時に、これらのフラグメントおよびバリエーションを使用できます。また、アセットブラウザーからページにドラッグすることで、既存のコンテンツフラグメントアセットを使用できます(基盤コンポーネントの画像など、他のアセットベースのコンポーネントと同様)。既製のコンテンツフラグメントコンポーネントには、参照されているコンテンツフラグメントの要素が 1 つだけ表示されます。ページ上に表示する要素、バリエーションおよびフラグメント段落の範囲は、コンポーネントダイアログで定義できます。
定義 definition
コンテンツフラグメント コンポーネントは、コンテンツフラグメントアセット(効果的に拡張されたテキストアセット)への参照を保持するために使用されます。コンテンツフラグメントのリソースタイプは次のとおりです。
dam/cfm/components/contentfragment/contentfragment
参照を定義するには、次のプロパティを使用します。
fileReference
コンテンツフラグメントコンポーネントを完全にサポートするのは、タッチ操作対応 UI のエディターのみです。これには、クライアントライブラリが含まれます。
cq.authoring.editor.plugin.cfm
このライブラリは、コンテンツフラグメント専用の機能をエディターに追加します。例えば、ページ上でコンテンツフラグメントを追加および設定する機能、アセットブラウザーでコンテンツフラグメントアセットを検索する機能、およびサイドパネルで関連コンテンツを検索する機能を使用できます。
中間コンテンツ in-between-content
コンテンツフラグメント コンポーネントを使用すると、表示される要素の異なる段落の間に追加のコンポーネントをドロップできます。基本的に、表示される要素は異なる段落で構成されます(各段落はキャリッジリターンでマークされます)。これらの各段落の間に、他のコンポーネントを使用してコンテンツを挿入できます。
技術的には、表示される要素の各段落は個別の parsys 内に存在しており、段落間に追加される各コンポーネントは(内部的な処理で)その parsys に挿入されます。
つまり、コンテンツフラグメントコンポーネントのインスタンスが 3 つの段落で構成されている場合、そのコンポーネントはリポジトリ内に 3 つの異なる parsys が存在することになります。コンテンツフラグメントに追加される中間コンテンツは、実際にはこれらの parsys 内に配置されます。
リポジトリ内では、中間コンテンツは、段落構造全体内の位置を基準に格納されます。つまり、中間コンテンツは実際の段落コンテンツには添付されません。
これを説明するために、次の点に注意してください。
-
コンテンツフラグメントのインスタンスが 3 つの段落で構成されている
-
また、2 番目の段落の後に既に一部のコンテンツが挿入されている
- これは、コンテンツは 2 番目の parsys に格納されることを意味します。
基本的に、このインスタンスの段落構造を変更した場合は(表示される段落のバリエーション、要素または範囲を変更するなど)、表示される中間コンテンツに影響が及びます。例えば次の場合が考えられます。
-
コンテンツフラグメントコンポーネントが編集され、2 番目の段落の前に別の段落が追加される:
- 中間コンテンツは、新規作成された段落の後に表示されます(2 番目の parsys が新規作成された段落を保持)。
-
コンテンツフラグメントコンポーネントが編集され、2 番目の段落が削除された場合。
- 中間コンテンツは、以前は 3 番目だった段落の後に表示されます(2 番目の parsys が以前は 3 番目だった段落を保持)。
-
最初の段落だけを表示するようにコンテンツフラグメントコンポーネントが設定された場合。
- 中間コンテンツは表示されません(新しい設定により、2 番目の parsys はレンダリングされなくなります)。
コンテンツフラグメントコンポーネントのカスタマイズ customizing-the-content-fragment-component
既製のコンテンツフラグメントコンポーネントを拡張のブループリントとして使用するには、次の契約に従う必要があります。
-
HTL レンダリングスクリプトとそれに関連する POJO を再利用すると、中間コンテンツ機能の実装方法を確認できます。
-
コンテンツフラグメントノード
cq:editConfig
を再利用します。afterinsert
/afteredit
/afterdelete
リスナーを使用して JS イベントを呼び出します。このイベントはcq.authoring.editor.plugin.cfm
クライアントライブラリで処理されて、関連コンテンツがサイドパネルに表示されます。- コンテンツフラグメントアセットのドラッグをサポートするように
cq:dropTargets
を設定します。 - ページエディターでコンテンツフラグメントのオーサリングをサポートするように
cq:inplaceEditing
を設定します。フラグメントのインプレースエディターはcq.authoring.editor.plugin.cfm
クライアントライブラリで定義され、クイックリンクによって現在の要素/バリエーションをフラグメントエディターで開けるようにします。
レンダリング前のアセットの書き換え asset-rewriting-before-rendering
コンテンツフラグメント管理では、内部レンダリングプロセスを使用して、ページの最終 HTML 出力を生成します。これは、コンテンツフラグメントコンポーネントによって内部的に使用されますが、参照ページ上の参照フラグメントを更新するバックグラウンドプロセスによっても使用されます。
内部では、このレンダリングに Sling Rewriter を使用します。各設定は /libs/dam/config/rewriter/cfm
にあり、必要に応じて調整できます。詳しくは、Apache Sling Rewriter を参照してください。
/libs/dam/config/rewriter/cfm
serializerType
を次のように更新する 必要があります。serializerType="html5-serializer"
既製の設定は、次の変換サービスを使用します。
-
transformer-cfm-payloadfilter
- フラグメントの HTML のbody
部分(<body>...</body>
)の取得用のみ -
transformer-cfm-parfilter
- 段落範囲が指定されている場合に、不要な段落を除外します(コンテンツフラグメントコンポーネントで実行可能) -
transformer-cfm-assetprocessor
- フラグメントに埋め込まれたアセットのリストを取得するために内部で使用されます
レンダリング処理は com.adobe.cq.dam.cfm.content.FragmentRenderService
を通じて行われ、必要に応じて、(例えば)カスタムコンポーネントによって使用されます。