이 장에서 기본 페이지 구성 요소와 편집 가능한 템플릿 간의 관계를 살펴보겠습니다. 의 몇 가지 모집단 설명을 기반으로 스타일이 지정되지 않은 문서 템플릿을 만드는 방법을 알아봅니다. Adobe XD. 템플릿을 작성하는 과정에서 편집 가능한 템플릿의 핵심 구성 요소 및 고급 정책 구성이 다룹니다.
설정에 필요한 도구 및 지침을 검토합니다. 로컬 개발 환경.
이전 장을 성공적으로 완료한 경우 프로젝트를 다시 사용하고 시작 프로젝트를 체크 아웃하는 단계를 건너뛸 수 있습니다.
자습서가 빌드하는 기본 라인 코드를 확인합니다.
다음을 확인하십시오 tutorial/pages-templates-start
분기 GitHub
$ cd ~/code/aem-guides-wknd
$ git checkout tutorial/pages-templates-start
Maven 기술을 사용하여 로컬 AEM 인스턴스에 코드 베이스를 배포합니다.
$ mvn clean install -PautoInstallSinglePackage
AEM 6.5 또는 6.4를 사용하는 경우 classic
프로파일을 Maven 명령에 추가합니다.
$ mvn clean install -PautoInstallSinglePackage -Pclassic
항상 완료된 코드를 GitHub 또는 분기로 전환하여 로컬로 코드를 체크 아웃합니다 tutorial/pages-templates-solution
.
자습서의 이 부분에서 문서 페이지를 만들고 공통 구조에 맞게 조정하는 데 사용할 수 있는 새 문서 페이지 템플릿을 만듭니다. 문서 페이지 템플릿은 Adobe XD에서 만들어진 UI 키트 및 디자인을 기반으로 합니다. 이 장은 템플릿의 구조나 골격을 빌드하는 데만 중점을 둡니다. 스타일이 구현되지 않지만 템플릿 및 페이지가 작동합니다.
일반적으로, 새 웹 사이트를 계획하는 것은 모집단 및 정적 디자인부터 시작됩니다. Adobe XD 사용자 경험을 구축하는 디자인 도구입니다. 다음으로 문서 페이지 템플릿의 구조를 계획하는 데 도움이 되도록 UI 키트 및 샘플을 살펴보겠습니다.
다운로드 WKND 문서 디자인 파일.
일반 AEM 코어 구성 요소 UI 키트도 사용할 수 있습니다 을 사용자 지정 프로젝트의 시작점으로 사용할 수 있습니다.
페이지를 생성할 때 페이지 작성 기준으로 사용되는 템플릿을 선택해야 합니다. 템플릿은 결과 페이지, 초기 컨텐츠 및 허용된 구성 요소의 구조를 정의합니다.
의 주요 영역은 세 가지입니다 편집 가능한 템플릿:
다음으로, 모집단 구조와 일치하는 템플릿을 AEM에서 생성합니다. 이 이벤트는 AEM의 로컬 인스턴스에서 발생합니다. 아래 비디오에서 절차를 따르십시오.
위의 비디오에 대한 높은 수준의 단계:
/content/experience-fragments/wknd/us/en/site/header/master
.header
. 다음 header
요소는 다음 장에서 CSS를 사용하여 타깃팅됩니다./content/experience-fragments/wknd/us/en/site/footer/master
.footer
. 다음 footer
요소는 다음 장에서 CSS를 사용하여 타깃팅됩니다.main
. 다음 main
요소는 다음 장에서 CSS를 사용하여 타깃팅됩니다.H4
.H5
.으로 이동하여 템플릿 콘솔에서 템플릿 보기 http://localhost:4502/libs/wcm/core/content/sites/templates.html/conf/wknd
활성화 문서 페이지 템플릿.
문서 페이지 템플릿의 속성을 편집하고 다음 축소판을 업로드하여 문서 페이지 템플릿을 사용하여 만든 페이지를 빠르게 식별합니다.
머리글이나 바닥글과 같은 글로벌 컨텐츠를 만들 때 일반적으로 사용할 때는 경험 조각. 경험 조각 을 사용하면 여러 구성 요소를 결합하여 하나의 참조 가능한 구성 요소를 만들 수 있습니다. 경험 조각은 다중 사이트 관리를 지원하고 로컬라이제이션.
AEM 프로젝트 원형 이 머리글 및 바닥글을 생성했습니다. 그런 다음 경험 조각을 업데이트하여 비웃는 내용과 일치시킵니다. 아래 비디오에서 절차를 따르십시오.
위의 비디오에 대한 높은 수준의 단계:
/content/wknd/us/en
홈 페이지./content/wknd/us/en
홈 페이지.그런 다음 문서 페이지 템플릿을 사용하여 페이지를 만듭니다. 사이트의 컨텐츠를 작성하여 사이트 모집단 과 일치시킵니다. 아래 비디오에서 절차를 따르십시오.
위의 비디오에 대한 높은 수준의 단계:
/content/wknd/us/en/magazine
.이 시점에서 기사 페이지는 분명히 스타일이 지정되지 않았습니다. 그러나 기본적인 구조가 제자리에 있습니다. 그런 다음 문서 페이지의 노드 구조를 검사하여 템플릿, 페이지 및 구성 요소의 역할을 더 잘 이해할 수 있습니다.
로컬 AEM 인스턴스에서 CRXDE-Lite 도구를 사용하여 기본 노드 구조를 확인합니다.
열기 CRXDE-Lite 트리 탐색 기능을 사용하여 /content/wknd/us/en/magazine/guide-la-skateparks
.
을(를) 클릭합니다. jcr:content
노드 아래의 노드 la-skateparks
페이지를 열고 속성을 확인합니다.
다음 기간 동안 cq:template
: /conf/wknd/settings/wcm/templates/article-page
: 앞에서 만든 문서 페이지 템플릿.
또한 값 sling:resourceType
: wknd/components/page
. AEM 프로젝트 원형에 의해 만들어진 페이지 구성 요소이며 템플릿을 기반으로 페이지 렌더링을 수행합니다.
를 확장합니다. jcr:content
노드 아래 /content/wknd/us/en/magazine/guide-la-skateparks/jcr:content
그리고 노드 계층을 봅니다.
각 노드를 작성된 구성 요소에 느슨하게 매핑할 수 있어야 합니다. 접두사가 있는 노드를 검사하여 사용되는 다양한 레이아웃 컨테이너를 식별할 수 있는지 확인합니다. container
.
다음 위치 페이지 구성 요소를 검사합니다. /apps/wknd/components/page
. CRXDE Lite에서 구성 요소 속성 보기:
HTL 스크립트는 두 개뿐입니다. customfooterlibs.html
및 customheaderlibs.html
페이지 구성 요소 아래에 표시됩니다. 그러면 이 구성 요소는 페이지를 어떻게 렌더링합니까?
다음 sling:resourceSuperType
속성이 core/wcm/components/page/v2/page
. 이 속성을 사용하면 WKND의 페이지 구성 요소를 상속할 수 있습니다 모두 핵심 구성 요소 페이지 구성 요소의 기능입니다. 이것이 바로 프록시 구성 요소 패턴. 자세한 내용 여기.
Inspect은 WKND 구성 요소 내에서 Breadcrumb
구성 요소: /apps/wknd/components/breadcrumb
. 동일한 sling:resourceSuperType
속성을 찾을 수 있지만 이번에는 core/wcm/components/breadcrumb/v2/breadcrumb
. 프록시 구성 요소 패턴을 사용하여 코어 구성 요소를 포함하는 다른 예입니다. 실제로 WKND 코드 베이스의 모든 구성 요소는 AEM 코어 구성 요소의 프록시입니다(사용자 지정 데모 HelloWorld 구성 요소 제외). 핵심 구성 요소의 기능을 최대한 재사용하는 것이 좋습니다 이전 사용자 지정 코드를 작성하는 중입니다.
다음으로 핵심 구성 요소 페이지 검사 위치 /libs/core/wcm/components/page/v2/page
CRXDE Lite 사용:
에서 AEM 6.5/6.4의 핵심 구성 요소는 아래에 있습니다 /apps/core/wcm/components
. AEM as a Cloud Service에서 핵심 구성 요소는 아래에 있습니다 /libs
및 은(는) 자동으로 업데이트됩니다.
많은 스크립트 파일이 이 페이지 아래에 포함되어 있습니다. 핵심 구성 요소 페이지에는 다양한 기능이 포함되어 있습니다. 이 기능은 유지 보수 및 가독성을 향상시키기 위해 여러 스크립트로 분할됩니다. HTL 스크립트를 page.html
그리고 data-sly-include
:
<!--/* /libs/core/wcm/components/page/v2/page/page.html */-->
<!DOCTYPE HTML>
<html data-sly-use.page="com.adobe.cq.wcm.core.components.models.Page" lang="${page.language}"
data-sly-use.head="head.html"
data-sly-use.footer="footer.html"
data-sly-use.redirect="redirect.html">
<head data-sly-call="${head.head @ page = page}"></head>
<body class="${page.cssClassNames}"
id="${page.id}"
data-cmp-data-layer-enabled="${page.data ? true : false}">
<script data-sly-test.dataLayerEnabled="${page.data}">
window.adobeDataLayer = window.adobeDataLayer || [];
adobeDataLayer.push({
page: JSON.parse("${page.data.json @ context='scriptString'}"),
event:'cmp:show',
eventInfo: {
path: 'page.${page.id @ context="scriptString"}'
}
});
</script>
<sly data-sly-test.isRedirectPage="${page.redirectTarget && (wcmmode.edit || wcmmode.preview)}"
data-sly-call="${redirect.redirect @ redirectTarget = page.redirectTarget}"></sly>
<sly data-sly-test="${!isRedirectPage}">
<sly data-sly-include="body.skiptomaincontent.html"></sly>
<sly data-sly-include="body.socialmedia_begin.html"></sly>
<sly data-sly-include="body.html"></sly>
<sly data-sly-call="${footer.footer @ page = page}"></sly>
<sly data-sly-include="body.socialmedia_end.html"></sly>
</sly>
</body>
</html>
HTL을 여러 스크립트로 분할하는 또 다른 이유는 프록시 구성 요소가 개별 스크립트를 재정의하여 사용자 지정 비즈니스 논리를 구현할 수 있도록 하기 위한 것입니다. HTL 스크립트 customfooterlibs.html
, 및 customheaderlibs.html
은 프로젝트를 구현하여 재정의할 명시적 목적으로 만들어집니다.
편집 가능한 템플릿 요소가 렌더링을 구성하는 방법에 대해 자세히 알아볼 수 있습니다 이 문서를 읽은 컨텐츠 페이지.
이동 경로에서 과 같은 다른 핵심 구성 요소 Inspect /libs/core/wcm/components/breadcrumb/v2/breadcrumb
. 보기 breadcrumb.html
이동 경로 구성 요소에 대한 마크업이 최종적으로 생성되는 방법을 이해하는 스크립트입니다.
특히 AEM 프로젝트 시작 시 템플릿 및 관련 컨텐츠 정책과 같은 구성을 소스 제어에 유지하는 것이 중요합니다. 이렇게 하면 모든 개발자가 동일한 컨텐츠 및 구성 세트에 대해 작업하고 있으므로 환경 간에 추가적인 일관성을 유지할 수 있습니다. 프로젝트가 일정 수준의 성숙기에 도달하면 템플릿 관리 방법을 특수 사용자 그룹으로 전환할 수 있습니다.
현재 템플릿은 다른 코드 조각처럼 처리되고 문서 페이지 템플릿 프로젝트의 일부로서.
지금까지 코드는 AEM 프로젝트에서 AEM의 로컬 인스턴스로 푸시됩니다. 다음 문서 페이지 템플릿 는 AEM의 로컬 인스턴스에 직접 만들어지므로 가져오기 템플릿을 AEM 프로젝트에 추가합니다. 다음 ui.content 이 특정 목적을 위해 모듈이 AEM 프로젝트에 포함되어 있습니다.
다음 몇 단계는 를 사용하여 VSCode IDE에서 수행됩니다 VSCode AEM 동기화 플러그인. 그러나 사용자가 구성한 모든 IDE를 사용할 수 있습니다 가져오기 또는 AEM의 로컬 인스턴스에서 컨텐츠를 가져옵니다.
에서 VSCode가 aem-guides-wknd
프로젝트.
를 확장합니다. ui.content 모듈(프로젝트 탐색기)을 클릭하여 제품에서 사용할 수 있습니다. 를 확장합니다. src
폴더 및 이동 /conf/wknd/settings/wcm/templates
.
마우스 오른쪽 단추 클릭 a templates
폴더를 선택하고 AEM 서버에서 가져오기:
다음 article-page
는 page-content
, xf-web-variation
템플릿도 업데이트해야 합니다.
단계를 반복하여 컨텐츠를 가져오지만 정책 폴더 위치 /conf/wknd/settings/wcm/policies
.
Inspect filter.xml
파일 위치 ui.content/src/main/content/META-INF/vault/filter.xml
.
<!--ui.content filter.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<workspaceFilter version="1.0">
<filter root="/conf/wknd" mode="merge"/>
<filter root="/content/wknd" mode="merge"/>
<filter root="/content/dam/wknd" mode="merge"/>
<filter root="/content/experience-fragments/wknd" mode="merge"/>
</workspaceFilter>
다음 filter.xml
파일은 패키지와 함께 설치된 노드의 경로를 식별해야 합니다. 다음 사항에 주의하십시오. mode="merge"
기존 콘텐츠를 수정하지 않음을 나타내는 각 필터에 새로운 콘텐츠만 추가됩니다. 컨텐츠 작성자는 이러한 경로를 업데이트할 수 있으므로 코드 배포가 수행하는 것이 중요합니다 not 콘텐츠를 덮어씁니다. 자세한 내용은 FileVault 설명서 를 참조하십시오.
비교 ui.content/src/main/content/META-INF/vault/filter.xml
및 ui.apps/src/main/content/META-INF/vault/filter.xml
각 모듈에서 관리하는 서로 다른 노드를 이해하기 위해
WKND 참조 사이트에 대한 일관된 배포를 위해 프로젝트의 일부 분기가 설정되도록 합니다 ui.content
는 JCR의 모든 변경 사항을 덮어씁니다. 코드/스타일이 특정 정책에 대해 작성되므로 솔루션 분기 등의 디자인을 통해 이루어집니다.
축하합니다. Adobe Experience Manager Sites을 사용하여 템플릿과 페이지를 만들었습니다.
이 시점에서 기사 페이지는 분명히 스타일이 지정되지 않았습니다. 다음을 수행합니다 클라이언트 측 라이브러리 및 프런트 엔드 워크플로우 사이트에 전역 스타일을 적용하고 전용 프런트 엔드 빌드를 통합하는 CSS 및 JavaScript를 포함하는 우수 사례를 살펴보려면 자습서를 참조하십시오.
에서 완성된 코드 보기 GitHub 코드를 Git 분기에서 로컬로 검토하고 배포합니다 tutorial/pages-templates-solution
.
tutorial/pages-templates-solution
분기