일부 컨텐츠 조각 기능을 사용하려면 AEM 6.4 서비스 팩 2(6.4.2.0)를 적용해야 합니다.
컨텐츠 조각은 표준 자산을 확장합니다.다음을 참조하십시오.
컨텐츠 조각의 기본 구성 부분은 다음과 같습니다.
조각 유형에 따라 모델 또는 템플릿도 사용됩니다.
이제 컨텐츠 조각 모델을 사용하여 모든 조각을 만드는 것이 좋습니다.
컨텐츠 조각 모델은 We.Retail의 모든 예에 사용됩니다.
컨텐츠 조각 모델:
기존 컨텐츠 조각 모델을 변경하면 종속된 조각이 영향을 받을 수 있습니다.이로 인해 해당 조각에서 고아 속성이 생길 수 있습니다.
컨텐츠 조각 템플릿:
CFM(컨텐츠 조각 관리)은 다음 방법으로 AEM Assets에 포함되어 있습니다.
구조화된 컨텐츠(즉, 컨텐츠 조각 모델 기반)가 있는 컨텐츠 조각은 단일 자산에 매핑됩니다.
모든 컨텐츠는 자산의 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
속성은 다른 자산 유형의 속성과 유사한 방식으로 처리됩니다.예를 들어 컨텐츠 조각을 다른 위치로 이동할 때.
구성 요소로 표시할 변형을 선택할 수 있습니다.
또한 출력을 제한하기 위해 다양한 단락을 선택할 수 있습니다.예를 들어 다중 열 출력에 사용할 수 있습니다.
구성 요소는 중간 컨텐츠를 허용합니다.
중간 컨텐츠의 경우 다음을 수행해야 합니다.
컨텐츠 조각 모델:
페이지에서 컨텐츠 조각 모델을 기반으로 한 컨텐츠 조각을 사용할 때 모델이 참조됩니다. 즉, 페이지를 게시할 때 모델이 게시되지 않은 경우 이 플래그가 지정되고 모델이 페이지와 함께 게시될 리소스에 추가됩니다.
컨텐츠 조각 템플릿:
페이지에서 컨텐츠 조각 템플릿을 기반으로 한 컨텐츠 조각을 사용할 때 조각을 만들 때 템플릿이 복사되어 참조가 없습니다.
컨텐츠 조각의 백엔드 구현은 예를 들어 페이지에서 사용되는 조각의 인스턴스를 검색 가능하게 하거나 혼합 미디어 컨텐츠를 관리하는 책임이 있습니다. 이 구현은 조각 렌더링에 사용되는 구성 요소와 렌더링이 매개 변수화되는 방법을 알고 있어야 합니다.
이 매개 변수의 매개 변수는 웹 콘솔에서 OSGi 번들 DAM 컨텐츠 조각 구성에 대해 구성할 수 있습니다.
리소스 유형
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 문자열을 국제화할 수 있습니다.메타데이터 스키마
CFM은 고유한 특정 스키마를 제공합니다.
/libs/dam/content/schemaeditors/forms/contentfragment
필요한 경우 확장할 수 있습니다.
각 스키마 양식은 조각 편집기와 통합됩니다.
서버측 API를 사용하여 컨텐츠 조각에 액세스할 수 있습니다.다음을 참조하십시오.
com.adobe.cq.dam.cfm
컨텐츠 구조에 직접 액세스하는 대신 서버측 API를 사용하는 것이 좋습니다.
다음 세 개의 인터페이스가 시작 지점으로 사용될 수 있습니다.
조각 템플릿
조각 템플릿
새 조각을 만들려면 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
콘텐츠 조각
컨텐츠 조각
이 인터페이스를 사용하면 컨텐츠 조각을 추상적으로 사용할 수 있습니다.
이 인터페이스를 통해 조각에 액세스하는 것이 좋습니다. 컨텐츠 구조를 직접 변경하지 않아야 합니다.
인터페이스는 다음 방법을 제공합니다.
기본 데이터 관리(예: 이름 가져오기;get/set title/description)
메타데이터 액세스
액세스 요소:
ContentElement
참조).조각에 대해 정의된 목록 변형
새로운 변형을 전체적으로 만들기
관련 컨텐츠 관리:
조각의 모델 또는 템플릿에 액세스
조각의 주요 요소를 나타내는 인터페이스는 다음과 같습니다.
콘텐츠 요소
ContentElement
컨텐츠 변형
컨텐츠 변형
세 가지 인터페이스( 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는 에서 변경 내용을 자동으로 지속하지 않도록 설계되었습니다(API JavaDoc에 별도로 기술되지 않는 경우). 따라서 항상 각 요청의 리소스 확인자(또는 실제로 사용 중인 해결자)를 커밋해야 합니다.
추가 작업이 필요할 수 있는 작업:
ContentElement
에서 새 변형을 만들면 데이터 구조가 업데이트되지 않습니다(ContentFragment
에서 전역적으로 만듭니다.).AEM 6.4의 경우 클라이언트측 API는 내부입니다.
다음을 참조하십시오.
filter.xml
컨텐츠 조각 관리를 위한 filter.xml
이 Assets 코어 컨텐츠 패키지와 겹치지 않도록 구성되어 있습니다.
사용자가 편집기 페이지 중 하나에서 컨텐츠 조각을 열면 편집 세션이 시작됩니다. 사용자가 저장 또는 취소를 선택하여 편집기를 떠나면 편집 세션이 끝납니다.
편집 세션을 제어하기 위한 요구 사항은 다음과 같습니다.
관련 프로세스는 다음과 같습니다.
세션 시작
세션 종료
자동 저장이 중지됩니다.
커밋 시:
롤백 시:
편집
가능한 작업은 다음과 같습니다.
페이지 입력
편집 세션이 이미 있는지 확인합니다.를 눌러 각 쿠키를 확인합니다.
있을 경우 현재 편집 중인 컨텐츠 조각에 대해 편집 세션이 시작되었는지 확인합니다
편집 세션이 없는 경우 사용자가 첫 번째 변경 작업을 기다립니다(아래 참조).
컨텐츠 조각이 페이지에서 이미 참조되어 있는지 확인하고, 있는 경우 적절한 정보를 표시합니다.
콘텐츠 변경
페이지 종료
이를 위해 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초와 같습니다.)
자세한 내용은 컨텐츠 조각 템플릿을 참조하십시오.
자세한 내용은