핵심 구성 요소의 논리 맞춤화

슬링 모드에서 핵심 구성 요소의 비즈니스 논리를 구현합니다. 슬링 전달 패턴을 사용하여 이 논리를 확장할 수 있습니다.

예를 들어 제목 핵심 구성 요소는 요청된 리소스의 jcr:title 속성을 사용하여 제목 텍스트를 제공합니다. jcr:title 속성이 정의되지 않은 경우 현재 페이지 제목에 대한 대체가 구현됩니다. 현재 페이지 제목을 언제든지 표시할 수 있도록 비헤이비어를 변경합니다.

핵심 구성 요소 모델 구현은 비공개이기 때문에 전달 패턴으로 핵심 구성 요소를 확장해야 합니다.

@Model(adaptables = SlingHttpServletRequest.class,
       adapters = Title.class,
       resourceType = "myproject/components/pageHeadline")
public class PageHeadline implements Title {

    @ScriptVariable private Page currentPage;

    @Self @Via(type = ResourceSuperType.class)

    private Title title;
    @Override public String getText() {
        return currentPage.getTitle();
    }

    @Override public String getType() {
        return title.getType();
    }
}

전달 패턴에 대한 자세한 내용은 핵심 구성 요소 GitHub Wiki 문서 슬링 모드의 전달 패턴을 참조하십시오.

마크업 맞춤화

경우에 따라 고급 스타일링에는 서로 다른 구성 요소의 마크업 구조가 필요합니다.

핵심 구성 요소에서 프록시 구성 요소로 수정할 수 있는 HTL 파일을 복사하여 이 작업을 간편하게 수행할 수 있습니다.

핵심 이동 경로 구성 요소의 예를 다시 사용하여 마크업 출력을 사용자 정의하기 때문에 핵심 이동 경로 구성 요소를 지정하는 sling:resourceSuperTypes가 포함된 사이트별 구성 요소에 breadcrumb.html 파일을 복사해야 합니다.

구성 요소 스타일링

맞춤화의 첫 번째 양식은 CSS 스타일 적용입니다.

이를 쉽게 수행하기 위해 핵심 구성 요소는 시맨틱 마크업을 렌더링하고 Bootstrap에서 영감을 얻은 표준화된 지정 규칙을 수행합니다. 간편하게 타기팅하고 개별 구성 요소의 스타일에 대해 네임스페이스를 수행하기 위해 “cmp” 및 “cmp-<name>” 클래스와 함께 각 구성 요소를 DIV 요소에서 래핑합니다.

예를 들어 v1 핵심 이동 경로 구성 요소의 HTL 파일(breadcrumb.html)을 살펴보면서 요소 출력의 계층 구조가 ol.breadcrumb > li.breadcrumb-item > a인지 확인합니다. 이에 CSS 규칙만 이동 경로에 영향을 미치는지 확인하려면 아래와 같이 모든 규칙에 대해 네임스페이스를 수행해야 합니다.

.cmp-breadcrumb .breadcrumb {}
.cmp-breadcrumb .breadcrumb-item {}
.cmp-breadcrumb a {}

또한, 각 핵심 구성 요소는 AEM 스타일 시스템 기능을 활용합니다. 그리고 템플릿 작성자는 이 기능을 통해 페이지 작성자가 구성 요소에 적용할 수 있는 추가 CSS 클래스 이름을 정의할 수 있습니다. 이로써 각 템플릿에서 허용된 구성 요소 스타일 목록을 정의하고, 스타일 중 하나가 기본적으로 해당 구성 요소에 적용되는지 여부를 확인할 수 있습니다.

맞춤화 호환성 업그레이드

서로 다른 세 가지 업그레이드가 가능합니다.

  • AEM 버전 업그레이드 중
  • 새 보조 버전으로 핵심 구성 요소 업그레이드 중
  • 주요 버전으로 핵심 구성 요소 업그레이드 중

일반적으로, 구성 요소 버전이 마이그레이션 중인 새 AEM 버전을 지원하고 맞춤화 과정에서 더 이상 사용되지 않거나 제거된 API를 사용하지 않는 경우 새 버전으로 AEM을 업그레이드하여도 핵심 구성 요소나 맞춤화 수행에는 영향을 미치지 않습니다.

이 페이지에 설명된 맞춤화 패턴을 사용하는 경우에 최신 주요 버전으로 전환하지 않고 핵심 구성 요소를 업그레이드하여도 맞춤화에는 영향을 미치지 않습니다.

최신 주요 버전의 핵심 구성 요소로 전환하면 콘텐츠 구조에만 호환될 수 있지만 맞춤화 리팩터링을 수행해야 합니다. 이 페이지에 설명된 맞춤화에 영향을 미치는 변경 사항을 강조하기 위해 각 구성 요소 버전의 변경 로그를 명확하게 게시할 수 있습니다.

맞춤화 지원

AEM 구성 요소의 경우와 마찬가지로 맞춤화에 대해 알아야 할 부분이 많습니다.

  1. 바로 핵심 구성 요소 코드를 수정하지 않습니다.

    이로써 구성 요소를 완전히 지원할 수 있으며, 구성 요소에 대한 향후 업데이트가 어려운 프로세스가 될 수 있습니다. 대신 이 페이지에 설명된 맞춤화 방법을 사용합니다.

  2. 맞춤화 코드는 사용자가 확인해야 합니다.

    지원 프로그램은 맞춤화 코드를 다루지 않으며, 보고된 문제가 문서화된 바닐라 핵심 구성 요소로 재현될 수 없다면 조건이 충족되지 않습니다.

  3. 더 이상 사용되지 않거나 제거된 기능을 살펴봅니다.

    새 AEM 버전으로 업그레이드가 진행 중인 상태에서 더 이상 사용되지 않거나 제거된 기능 페이지를 살펴보면 사용된 모든 API가 주제 항목이 됩니다.

핵심 구성 요소 지원 섹션을 참고하십시오.

다음 참조:

Experience Manager