모바일 장치용 사이트 만들기

NOTE

단일 페이지 애플리케이션 프레임워크 기반 클라이언트측 렌더링(예: 응답)이 필요한 프로젝트에는 SPA 편집기를 사용하는 것이 좋습니다. 추가 정보.

모바일 사이트를 만드는 것은 템플릿 및 구성 요소 만들기와 관련된 표준 사이트를 만드는 것과 비슷합니다. 템플릿 및 구성 요소 만들기에 대한 자세한 내용은 다음 페이지를 참조하십시오. 템플릿, 구성 요소AEM Sites 개발시작. 주요 차이점은 사이트 내에서 AEM 내장된 모바일 기능을 활성화하는 것입니다. 모바일 페이지 구성 요소를 사용하는 템플릿을 만들면 됩니다.

또한 반응형 디자인사용을 고려해 다양한 화면 크기를 수용하는 단일 사이트를 만들어야 합니다.

시작하려면 AEM에서 제공되는 We.Retail 모바일 데모 사이트 를 살펴보십시오.

모바일 사이트를 만들려면 다음과 같이 하십시오.

  1. 페이지 구성 요소를 만듭니다.

    • 속성 sling:resourceSuperTypewcm/mobile/components/page

      이 방법으로 구성 요소는 모바일 페이지 구성 요소에 의존합니다.

    • 프로젝트 body.jsp 별 로직을 사용하여 프로젝트를 만듭니다.

  2. 페이지 템플릿을 만듭니다.

    • 속성 sling:resourceType 을 새로 만든 페이지 구성 요소로 설정합니다.
    • 속성을 allowedPaths 설정합니다.
  3. 사이트의 디자인 페이지를 만듭니다.

  4. 노드 아래에 사이트 루트 페이지를 /content 만듭니다.

    • 속성을 cq:allowedTemplates 설정합니다.
    • 속성을 cq:designPath 설정합니다.
  5. 사이트 루트 페이지의 페이지 속성에서 모바일 탭에서 장치 그룹을 설정합니다.

  6. 새 템플릿을 사용하여 사이트 페이지를 만듭니다.

모바일 페이지 구성 요소( /libs/wcm/mobile/components/page):

  • 페이지 속성 대화 상자에 모바일 탭을 추가합니다.
  • 이 구성 요소 head.jsp drawHead() 를 통해 요청에서 현재 모바일 장치 그룹을 검색하고 장치 그룹이 발견되면 그룹의 메서드를 사용하여 장치 그룹의 관련 에뮬레이터 init 구성 요소(작성자 모드에서만)와 장치 그룹의 렌더링 CSS를 포함합니다.
NOTE

모바일 사이트의 루트 페이지는 노드 계층 구조의 수준 1에 있어야 하며 /content 노드 아래에 있는 것이 좋습니다.

다중 사이트 관리자를 사용하여 모바일 사이트 만들기

MSM(Multi Site Manager)을 사용하여 표준 사이트에서 모바일 Live Copy를 만듭니다. 표준 사이트는 자동으로 모바일 사이트로 바뀝니다. 모바일 사이트에는 모바일 사이트의 모든 기능(예: 에뮬레이터 내의 에디션)이 있으며 표준 사이트와 동기화하여 관리할 수 있습니다. 다중 사이트 관리자 페이지 에서 다양한 채널에 대한 Live Copy 만들기 섹션을 참조하십시오.

서버측 모바일 API

모바일 클래스를 포함하는 Java 패키지는 다음과 같습니다.

모바일 구성 요소

We. Retail 모바일 데모 사이트 는 아래에 있는 다음 모바일 구성 요소를 사용합니다 /libs/foundation/components.

이름 그룹 특성
mobilefooter 숨김 - 바닥글
mobileimage 모바일 - image foundation component
-based on the image if the device is capable
mobilelist 모바일 - 목록 기반 구성 요소
기반 - list_tem_teaser.jsp는 장치가 지원되는 경우 이미지를 렌더링합니다.
mobilelogo 숨김 - logo foundation component
- device is capabilities
mobilereference 모바일

- 참조 기반 구성 요소와 유사

- textimage 구성 요소를 mobiletextimage 1에 매핑하고 이미지 구성 요소를 mobileimage1에 매핑합니다.

mobiletextimage 모바일 - textimage foundation component
- device is capabilities
mobiletopnav 숨김

- topnav foundation 구성 요소 기반

- 텍스트만 렌더링

모바일 구성 요소 만들기

AEM 모바일 프레임워크를 사용하면 요청을 실행하는 장치에 민감한 구성 요소를 개발할 수 있습니다. 다음 코드 샘플에서는 구성 요소 jsp에서 AEM mobile API를 사용하는 방법과 특히 방법:

  • 요청에서 장치를 가져옵니다.

    Device device = slingRequest.adaptTo(Device.class);

  • 장치 그룹 가져오기:

    DeviceGroup deviceGroup = device.getDeviceGroup();

  • 장치 그룹 기능 가져오기:

    Collection<DeviceCapability> capabilities = deviceGroup.getCapabilities();

  • 장치 속성(WURFL 데이터베이스의 원시 기능 키/값)을 가져옵니다.

    Map<String,String> deviceAttributes = device.getAttributes();

  • 장치 사용자 에이전트 가져오기:

    String userAgent = device.getUserAgent();

  • 현재 페이지에서 장치 그룹 목록(작성자가 사이트에 할당한 장치 그룹)을 가져옵니다.

    DeviceGroupList deviceGroupList = currentPage.adaptTo(DeviceGroupList.class);

  • 장치 그룹이 이미지를 지원하는지 확인

    if (deviceGroup.hasCapability(DeviceCapability.CAPABILITY_IMAGES)) {

    또는
    if MobileUtil.hasCapability(request, DeviceCapability.CAPABILITY_IMAGES) {

NOTE

jsp slingRequest 에서 <sling:defineObjects> 태그와 태그를 currentPage 통해 사용할 수 <cq:defineObjects> 있습니다.

에뮬레이터

에뮬레이터 기반 작성은 작성자가 모바일 클라이언트용 컨텐츠 페이지를 만드는 방법을 제공합니다. 모바일 컨텐츠 저작 역시 WYSIWYG 내 편집과 동일한 원칙을 따릅니다. 작성자가 모바일 장치에서 페이지 모양을 인식하기 위해 모바일 컨텐츠 페이지는 장치 에뮬레이터를 사용하여 편집됩니다.

모바일 장치 에뮬레이터는 일반 에뮬레이터 프레임워크를 기반으로 합니다. 자세한 내용은 에뮬레이터 페이지를 참조하십시오.

장치 에뮬레이터는 페이지의 모바일 장치를 표시하는 반면 일반적인 편집(parsys, 구성 요소)은 장치의 화면 내에서 발생합니다. 장치 에뮬레이터는 사이트에 대해 구성된 장치 그룹에 따라 다릅니다. 여러 에뮬레이터를 장치 그룹에 할당할 수 있습니다. 그러면 모든 에뮬레이터를 컨텐츠 페이지에서 사용할 수 있습니다. 기본적으로 사이트에 할당된 첫 번째 장치 그룹에 할당된 첫 번째 에뮬레이터가 표시됩니다. 에뮬레이터는 페이지 맨 위에 있는 에뮬레이터 회전 메뉴 또는 사이드 킥의 편집 단추를 통해 전환할 수 있습니다.

에뮬레이터 만들기

에뮬레이터를 만들려면 일반 에뮬레이터 페이지에서 사용자 정의 모바일 에뮬레이터 만들기 섹션을 참조하십시오.

모바일 에뮬레이터의 주요 특징

  • 장치 그룹은 다음 중 하나의 에뮬레이터로 구성됩니다. 장치 그룹 구성 페이지(예: /etc/mobile/groups/touch, contains the emulators property below jcr:content node.

    참고: 동일한 에뮬레이터가 여러 장치 그룹에 속할 수는 있지만, 이것은 의미가 없습니다.

  • 장치 그룹의 구성 대화 상자를 통해 emulators 속성은 원하는 에뮬레이터의 경로로 설정됩니다. 예: /libs/wcm/mobile/components/emulators/iPhone4.

  • 에뮬레이터 구성 요소(예: /libs/wcm/mobile/components/emulators/iPhone4) extend the base mobile emulator component ( /libs/wcm/mobile/components/emulators/base).

  • 장치 그룹을 구성할 때 기본 모바일 에뮬레이터를 확장하는 모든 구성 요소를 선택할 수 있습니다. 사용자 정의 에뮬레이터를 쉽게 만들거나 확장할 수 있습니다.

  • 요청 시 편집 모드에서 에뮬레이터 구현은 페이지를 렌더링하는 데 사용됩니다.

  • 페이지의 템플릿이 모바일 페이지 구성 요소에 의존하는 경우 에뮬레이터 기능은 모바일 페이지 구성 요소를 통해 페이지에 자동으로 head.jsp 통합됩니다.

장치 그룹

모바일 장치 그룹은 장치 기능을 기반으로 모바일 장치의 세그멘테이션을 제공합니다. 장치 그룹은 작성자 인스턴스의 에뮬레이터 기반 작성과 게시 인스턴스의 올바른 컨텐츠 렌더링에 필요한 정보를 제공합니다. 작성자가 모바일 페이지에 컨텐츠를 추가하고 게시한 후에는 게시 인스턴스에서 페이지를 요청할 수 있습니다. 여기에서 에뮬레이터 편집 보기 대신 구성된 장치 그룹 중 하나를 사용하여 컨텐츠 페이지가 렌더링됩니다. 장치 그룹 선택은 모바일 장치 감지를 기반으로 합니다. 그러면 일치하는 장치 그룹이 필요한 스타일 정보를 제공합니다.

장치 그룹은 아래에 컨텐트 페이지로 정의되며 /etc/mobile/devices 모바일 장치 그룹 ​템플릿을 사용합니다. 장치 그룹 템플릿은 컨텐츠 페이지 형태의 장치 그룹 정의에 대한 구성 템플릿 역할을 합니다. 주요 특징:

  • 위치: /libs/wcm/mobile/templates/devicegroup
  • 허용되는 경로: /etc/mobile/groups/*
  • Page Component: wcm/mobile/components/devicegroup

사이트에 장치 그룹 할당

모바일 사이트를 만들 때 장치 그룹을 사이트에 할당해야 합니다. AEM에서는 장치의 HTML 및 JavaScript 렌더링 기능에 따라 세 개의 장치 그룹을 제공합니다.

  • Sony Ericsson W800과 같은 기능 디바이스용 기능 휴대폰. 기본 HTML은 지원되지만 이미지와 JavaScript는 지원되지 않습니다.

  • 기본 HTML 및 이미지를 지원하지만 JavaScript를 지원하지 않는 Blackberry와 같은 디바이스용 스마트 폰.

  • HTML, 이미지, JavaScript 및 디바이스 회전을 완벽하게 지원하는 iPad와 같은 디바이스용 터치

에뮬레이터를 장치 그룹과 연결할 수 있으므로(장치 그룹 만들기섹션 참조) 장치 그룹을 사이트에 할당하면 작성자가 장치 그룹과 연관된 에뮬레이터 중에서 선택하여 페이지를 편집할 수 있습니다.

사이트에 장치 그룹을 지정하려면

  1. 브라우저에서 Siteadmin 콘솔로 이동합니다.

  2. 웹 사이트 아래에서 모바일 사이트의 루트 페이지를 엽니다.

  3. 페이지 속성을 엽니다.

  4. Select the Mobile tab:

    • 장치 그룹을 정의합니다.
    • 확인​을 클릭합니다.
NOTE

장치 그룹이 사이트에 대해 정의되면 사이트의 모든 페이지에서 상속됩니다.

장치 그룹 필터

장치 그룹 필터는 장치가 그룹에 속하는지 여부를 결정하기 위한 기능 기반 기준을 정의합니다. 장치 그룹을 만들 때 장치 평가에 사용할 필터를 선택할 수 있습니다.

AEM이 장치로부터 HTTP 요청을 받은 런타임 시, 그룹과 연관된 각 필터는 장치 기능을 특정 기준과 비교합니다. 필터가 필요한 모든 기능을 갖춘 장치는 그룹에 속한 것으로 간주됩니다. 기능은 WURFL™ 데이터베이스에서 검색됩니다.

장치 그룹은 기능 탐지에 0개 이상의 필터를 사용할 수 있습니다. 또한 필터를 여러 장치 그룹에 사용할 수도 있습니다. AEM은 장치에 그룹에 대해 선택된 기능이 있는지 여부를 결정하는 기본 필터를 제공합니다.

  • CSS
  • JPG 및 PNG 이미지
  • JavaScript
  • 장치 회전

장치 그룹이 필터를 사용하지 않는 경우 그룹에 대해 구성된 선택된 기능이 장치에 필요한 유일한 기능입니다.

자세한 내용은 장치 그룹 필터 만들기를 참조하십시오.

장치 그룹 만들기

AEM을 설치하는 그룹이 요구 사항을 충족하지 않을 때 장치 그룹을 만듭니다.

  1. In your browser, go to the Tools console.

  2. 도구 > 모바일 > 장치 그룹 아래에 새 페이지를 만듭니다. 페이지 만들기 대화 상자에서 다음을 수행합니다.

    • 제목으로 입력합니다 Special Phones.
    • 이름 입력합니다 special.
    • 모바일 장치 그룹 템플릿을 선택합니다.
    • 만들기​를 클릭합니다.
  3. CRXDE에서 노드 아래에 있는 장치 그룹에 대한 스타일을 포함하는 static.css 파일을 /etc/mobile/groups/special 추가합니다.

  4. 특수 전화 페이지를 엽니다.

  5. 장치 그룹을 구성하려면 설정 옆에 있는 편집 단추를 클릭합니다.

    일반 탭에서 다음을 수행합니다.

    • 제목: 모바일 장치 그룹의 이름입니다.
    • 설명: 그룹에 대한 설명입니다.
    • 사용자 에이전트: 장치가 일치하는 사용자-에이전트 문자열. 선택 사항이며 레게가 될 수 있습니다. 예: BlackBerryZ10
    • 기능: 그룹이 이미지, CSS, JavaScript 또는 장치 회전을 처리할 수 있는지 여부를 정의합니다.
    • 최소 화면 너비​및​높이
    • 에뮬레이터 비활성화: to able/disable the emulator during content editing.

    에뮬레이터 탭에서 다음을 수행합니다.

    • 에뮬레이터: 이 장치 그룹에 지정된 에뮬레이터를 선택합니다.

    필터 탭에서 다음을 수행합니다.

    • 필터를 추가하려면 항목 추가를 클릭하고 드롭다운 목록에서 필터를 선택합니다.
    • 필터는 나타나는 순서대로 평가됩니다. 장치가 필터 기준을 충족하지 않을 경우 목록의 후속 필터가 평가되지 않습니다.
  6. 확인을 클릭합니다.

모바일 장치 그룹 구성 대화 상자의 모양은 다음과 같습니다.

screen_shot_2012-02-01at22043pm

장치 그룹당 사용자 지정 CSS

앞에서 설명한 바와 같이, 디자인 페이지의 CSS와 마찬가지로 사용자 지정 CSS를 장치 그룹 페이지와 연결할 수 있습니다.이 CSS는 작성자와 게시 시 페이지 컨텐츠의 장치 그룹 특정 렌더링을 영향을 주는 데 사용됩니다.그러면 이 CSS가 자동으로 포함됩니다.

  • 이 장치 그룹이 사용하는 모든 에뮬레이터에 대한 작성자 인스턴스의 페이지
  • 게시 인스턴스의 페이지에서 요청의 사용자 에이전트가 이 특정 장치 그룹의 모바일 장치와 일치하는 경우

서버측 장치 감지

필터 및 장치 사양 라이브러리를 사용하여 HTTP 요청을 수행하는 장치의 기능을 결정합니다.

장치 그룹 필터 개발

장치 그룹 필터를 만들어 장치 기능 요구 사항 집합을 정의합니다. 필요한 장치 기능 그룹을 타게팅하는 데 필요한 만큼 필터를 만듭니다.

필터를 디자인하여 필터 조합을 사용하여 기능 그룹을 정의할 수 있습니다. 일반적으로 서로 다른 장치 그룹의 기능이 겹칩니다. 따라서 여러 장치 그룹 정의가 있는 일부 필터를 사용할 수 있습니다.

필터를 만든 후 그룹 구성에서 사용할 수 있습니다.

자세한 내용은 장치 그룹 필터 만들기로 이동합니다.

WURFL™ 데이터베이스 사용

AEM에서는 장치의 사용자-에이전트를 기반으로 화면 해상도 또는 javascript 지원과 같은 장치 기능을 쿼리하기 위해잘린 버전의 WURFL™ 데이터베이스를 사용합니다.

WURFL™ 데이터베이스의 XML 코드 /var/mobile/devicespecs 는 번들을 처음 시작할 때 노드를 확장하는 wurfl.xml파일 /libs/wcm/mobile/devicespecs/wurfl.xml. 을 구문 분석하여 아래 노드로 cq-mobile-core 표시됩니다.

장치 기능은 노드 속성으로 저장되고 노드는 장치 모델을 나타냅니다. 쿼리를 사용하여 장치 또는 사용자 에이전트의 기능을 검색할 수 있습니다.

WURFL™ 데이터베이스가 진화하고 있으므로 사용자 정의 또는 교체해야 할 수 있습니다. 모바일 장치 데이터베이스를 업데이트하려면 다음 옵션이 있습니다.

  • 이 사용을 허용하는 라이센스가 있는 경우 파일을 최신 버전으로 바꿉니다. 다른 WURFL 데이터베이스 설치를 참조하십시오.
  • AEM에서 사용할 수 있는 버전을 사용하고 사용자-에이전트 문자열과 일치하고 기존 WURFL™ 장치를 가리키는 등록을 구성합니다. 등록 기반 사용자-에이전트 일치 추가를 참조하십시오.

사용자-에이전트를 WURFL™ 기능에 매핑 테스트

장치가 모바일 사이트에 액세스하면 AEM에서 장치를 감지하여 기능에 따라 장치 그룹에 매핑하고 장치 그룹에 해당하는 페이지의 보기를 전송합니다. 일치하는 장치 그룹은 필요한 스타일 정보를 제공합니다. 매핑은 모바일 사용자-에이전트 테스트 페이지에서 테스트할 수 있습니다.

http://localhost:4502/etc/mobile/useragent-test.html

다른 WURFL™ 데이터베이스 설치

AEM과 함께 설치되는 잘린 WURFL™ 데이터베이스는 사전 날짜되는 릴리스입니다
2011년 8월 30일 2011년 8월 30일 이후에 WURFL 버전이 릴리스된 경우 사용 내용이 라이선스와 부합하는지 확인하십시오.

WURFL™ 데이터베이스를 설치하려면:

  1. CRXDE Lite에서 다음 폴더를 만듭니다. /apps/wcm/mobile/devicespecs
  2. WURFL™ 파일을 폴더에 복사합니다.
  3. 파일 이름을 로 변경합니다 wurfl.xml.

AEM은 자동으로 wurfl.xml 파일을 구문 분석하여 아래 노드를 업데이트합니다 /var/mobile/devicespecs.

NOTE

전체 WURFL™ 데이터베이스가 활성화되어 있으면 구문 분석 및 활성화는 몇 분 정도 걸릴 수 있습니다. 진행 상황 정보는 로그를 볼 수 있습니다.

등록 기반 사용자-에이전트 일치 추가

기존 WURFL™ 디바이스 유형을 가리키도록 사용자 에이전트를 /apps/wcm/mobile/devicects/wurfl/regexp 아래의 정규 표현식으로 추가합니다.

  1. CRXDE Lite 에서/apps/wcm/mobile/devicexps/regexp(예: apple_ipad_ver1) 아래에 노드를 만듭니다.

  2. 노드에 다음 속성을 추가합니다.

    • regexp: 사용자 에이전트를 정의하는 정규 표현식(예: .&ast;Mozilla.&ast;iPad.&ast;AppleWebKit.&ast;Safari&ast;
    • deviceId: wurfl.xml에서 정의된 장치 ID(예:: apple_ipad_ver1

위의 구성에서는 사용자-에이전트가 제공된 정규 표현식과 일치하는 장치가 apple_ipad_ver1 WURFL™ 장치 ID인 경우 이 식을 매핑하도록 합니다.

클라이언트측 장치 감지

이 섹션에서는 페이지 렌더링을 최적화하거나 클라이언트에 대체 웹 사이트 버전을 제공하기 위해 AEM의 장치 클라이언트측 검색을 사용하는 방법에 대해 설명합니다.

AEM은 디바이스 클라이언트측 검색을 지원합니다. BrowserMap BrowserMap 는 AEM에서 클라이언트 라이브러리로 배송됩니다 /etc/clientlibs/browsermap.

BrowserMap 클라이언트에 대체 웹 사이트를 제공하는 데 사용할 수 있는 세 가지 전략을 제공합니다. 이러한 전략은 다음 순서로 사용됩니다.

  1. 대체 링크

  2. 장치 그룹별 URL

  3. 선택기 기반 URL

NOTE

클라이언트 라이브러리 통합에 대한 자세한 내용은 클라이언트측 HTML 라이브러리 사용 섹션을 참조하십시오.

OSGi PageVariantsProvider 서비스는 동일한 가족에 속하는 사이트에 대한 대체 링크를 생성할 수 있습니다. 서비스가 검토할 사이트를 구성하려면 사이트 루트에서 노드를 노드에 cq:siteVariant jcr:content 추가해야 합니다.

노드에는 cq:siteVariant 다음 속성이 있어야 합니다.

  • cq:childNodesMapTo - 하위 노드가 매핑될 링크 요소의 속성을 결정합니다. 루트 노드의 자식은 글로벌 웹 사이트의 언어 변형 루트에 대한 루트(예: /content/mysite/en, /content/mysite/de). cq:childNodesMapTo 의 값은 hreflang

  • cq:variantDomain - 페이지 변형 절대 URL을 생성하는 데 사용할 Externalizer 도메인을 나타냅니다. 이 값이 설정되지 않으면 페이지 변형이 상대 링크를 사용하여 생성됩니다.

  • cq:variantFamily - 이 사이트가 속한 웹 사이트 제품군을 나타냅니다. 동일한 웹 사이트의 여러 장치별 표시는 동일한 제품군에 속해야 합니다.

  • media - 링크 요소의 media 속성 값을 저장합니다. 라이브러리는 자동으로 클라이언트를 웹 사이트의 올바른 변형으로 전송할 수 있도록 BrowserMap 등록된 이름 DeviceGroups BrowserMap 을 사용하는 것이 좋습니다.

PageVariantsProvider 및 Externalizer

노드의 cq:variantDomain 속성 값이 비어 있지 않으면 서비스는 이 값을 cq:siteVariant PageVariantsProvider Externalizer 서비스에 대해 구성된 도메인으로 사용하여 절대 링크를 생성합니다. 설정을 반영하도록 Externalizer 서비스를 구성해야 합니다.

NOTE

When working with AEM there are several methods of managing the configuration settings for such services; see Configuring OSGi for more details and the recommended practices.

장치 그룹 특정 URL 정의

대체 링크를 사용하지 않으려면 각 링크에 대한 글로벌 URL을 구성할 수 있습니다 DeviceGroup. 클라이언트 라이브러리를 포함하고 장치 그룹을 다시 정의하는 클라이언트 라이브러리를 만드는 것이 browsermap.standard 좋습니다.

BrowserMap은 사용자 지정된 클라이언트 라이브러리에서 동일한 이름의 새 장치 그룹을 만들어 BrowserMap 개체에 추가하여 장치 그룹 정의를 덮어쓸 수 있도록 설계되었습니다.

NOTE

자세한 내용은 사용자 지정된 BrowserMap 섹션을 참조하십시오.

선택기 기반 URL 정의

대체 사이트를 나타내기 위해 이전 메커니즘이 사용되지 않은 경우 BrowserMap이름이 사용되는 선택기가 DeviceGroups s에 추가됩니다. 이 경우 요청을 처리할 사용자 URL의 서블릿을 제공해야 합니다.

예를 들어 BrowserMap에서 www.example.com/index.html 식별된 장치 탐색 smartphonewww.example.com/index.smartphone.html.

페이지에서 BrowserMap 사용

페이지에서 표준 BrowserMap 클라이언트 라이브러리를 사용하려면 페이지의 /libs/wcm/core/browsermap/browsermap.jsp 섹션에 cq:include head 태그를 사용하여 파일을 포함해야 합니다.

<cq:include script="/libs/wcm/core/browsermap/browsermap.jsp" />

파일에 BrowserMap 클라이언트 라이브러리를 추가하는 것 외에도 웹 사이트 루트 아래 JSP 에 있는 cq:deviceIdentificationMode 노드에 String 속성 client-side jcr:content 을 추가해야 합니다.

BrowserMap의 기본 동작 재정의

프로브를 덮어쓰거나 BrowserMap 추가하여 사용자 DeviceGroups 를 지정하려면 browsermap.standard클라이언트측 라이브러리를 포함하는 자체 클라이언트측 라이브러리를 만들어야 합니다.

또한 코드에서 메서드를 수동으로 호출해야 BrowserMap.forwardRequest() JavaScript 합니다.

NOTE

클라이언트 라이브러리 통합에 대한 자세한 내용은 클라이언트측 HTML 라이브러리 사용 섹션을 참조하십시오.

사용자 정의된 BrowserMap 클라이언트 라이브러리를 만들었으면 다음 방법을 권장합니다.

  1. 애플리케이션에서 browsermap.jsp 파일 만들기

    <%@include file="/libs/foundation/global.jsp" %>
    <%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
    <%@ page import="
        com.day.cq.wcm.api.variants.PageVariant,
        com.day.cq.wcm.api.variants.PageVariantsProvider,
        com.day.cq.wcm.api.devicedetection.DeviceIdentificationMode,
        com.day.cq.wcm.api.WCMMode"
    %>
    <%
        final PageVariantsProvider p = sling.getService(PageVariantsProvider.class);
        if(p == null) {
            throw new IllegalStateException("Missing PageVariantsProvider service");
        }
        for(PageVariant v : p.getVariants(currentPage, slingRequest)) {
            final String curVar = v.getAttributes().get("data-current-variant");
            String media = v.getAttributes().get("media");
            if (media != null) {
                media = media.replaceAll(" ", "");
            }
    %>
        <link
            rel="alternate"
            data-cq-role="site.variant"
            title="<%= xssAPI.encodeForHTMLAttr(v.getTitle()) %>"
            hreflang="<%= xssAPI.encodeForHTMLAttr(v.getAttributes().get("hreflang")) %>"
            media="<%= xssAPI.encodeForHTMLAttr(media) %>"
            href="<%= xssAPI.getValidHref(v.getURL()) %>"
            <% if(curVar != null) { %> data-current-variant="<%= curVar %>"<% } %>
        />
    <%
        }
        Boolean browserMapEnabled = true;
        final DeviceIdentificationMode dim = sling.getService(DeviceIdentificationMode.class);
        String[] selectors  = slingRequest.getRequestPathInfo().getSelectors();
        boolean isPortletRequest = false;
        for (int i = 0; i < selectors.length; i++) {
            if ("portlet".equals(selectors[i])) {
                isPortletRequest = true;
                break;
            }
        }
        if (isPortletRequest) {
            log.debug("Request was made by a portlet container - BrowserMap will not be embedded");
        } else {
            final WCMMode wcmMode = WCMMode.fromRequest(slingRequest);
            boolean shouldIncludeClientLib = false;
            if (WCMMode.EDIT != wcmMode && WCMMode.PREVIEW != wcmMode && WCMMode.DESIGN != wcmMode) {
                if (dim != null) {
                    final String mode = dim.getDeviceIdentificationModeForPage(currentPage);
                    shouldIncludeClientLib = DeviceIdentificationMode.CLIENT_SIDE.equals(mode);
                    if (shouldIncludeClientLib) {
                        browserMapEnabled = (Boolean) request.getAttribute("browsermap.enabled");
                        if (browserMapEnabled == null) {
                            browserMapEnabled = true;
                        }
                    }
                }
            }
    %>
            <c:if test="<%= !browserMapEnabled %>">
                <meta name="browsermap.enabled" content="false">
            </c:if>
            <c:if test="<%= shouldIncludeClientLib %>">
                <meta name="viewport" content="width=device-width, initial-scale=1.0">
                <cq:includeClientLib categories="browsermap.custom"/>
            </c:if>
    <%
        }
    %>
    
  2. 헤드 섹션에 broswermap.jsp 파일을 포함합니다.

    <cq:include script="browsermap.jsp" />
    

특정 페이지에서 BrowserMap 제외

클라이언트 감지 기능이 필요하지 않은 일부 페이지에서 BrowserMap 라이브러리를 제외하려면 요청 속성을 추가할 수 있습니다.

<%
request.setAttribute("browsermap.enabled", false);
%>

그러면 /libs/wcm/core/browsermap/browsermap.jsp 스크립트를 사용하여 페이지에 메타 태그를 추가함으로써 검색을 수행하지 BrowserMap 않습니다.

<meta name="browsermap.enabled" content="false">

웹 사이트의 특정 버전 테스트

일반적으로 BrowserMap 스크립트는 항상 방문자를 가장 적합한 웹 사이트 버전으로 리디렉션하고, 일반적으로 필요할 때 방문자를 데스크탑 또는 모바일 사이트로 리디렉션합니다.

URL에 매개 변수를 추가하여 특정 웹 사이트 버전을 테스트하기 위해 요청 device 의 장치를 강제 적용할 수 있습니다. 다음 URL은 Geometrixx Outdoors 웹 사이트의 모바일 버전을 렌더링합니다.

http://localhost:4502/content/geometrixx-outdoors/en.html?wcmmode=disabled&device=smartphone

NOTE

매개 변수 wcmmode 는 게시 인스턴스의 동작을 시뮬레이션하기 disabled 위해 로 설정됩니다.

넘치는 장치 값은 쿠키에 저장되므로 각 장치에 매개 변수를 추가하지 않고 웹 사이트를 탐색할 수 있습니다 device URL.

따라서 웹 사이트의 데스크탑 버전 URL 으로 돌아가려면 이 device 세트를 사용하여 동일한 browser 호출을 해야 합니다.

NOTE

BrowserMap은 초과된 장치 값을 BMAP_device 이 쿠키를 삭제하면 CQ가 현재 디바이스(예: 데스크탑 또는 모바일)에 따라 적절한 버전의 웹 사이트를 제공할 수 있습니다.

모바일 요청 처리

AEM은 터치 장치 그룹에 속하는 모바일 장치에서 발행한 요청을 다음과 같이 처리합니다.

  1. iPad는 AEM 게시 인스턴스에 요청을 보냅니다(예: http://localhost:4503/content/geometrixx_mobile/en/products.html

  2. AEM은 요청한 페이지의 사이트가 모바일 사이트인지 여부를 결정합니다(첫 번째 수준 페이지가 모바일 페이지 구성 요소를 /content/geometrixx_mobile 확장하는지 여부를 확인하여). 예:

  3. AEM은 요청 헤더에서 사용자-에이전트를 기반으로 장치 기능을 조회합니다.

  4. AEM은 장치 기능을 장치 그룹에 매핑하고 장치 그룹 선택기 touch 로 설정합니다.

  5. AEM은 요청을 http://localhost:4503/content/geometrixx_mobile/en/products.touch.html.

  6. AEM은 iPad에 응답을 보냅니다.

    • products.touch.html 일반적인 방식으로 렌더링되므로 손쉽게 사용할 수 있습니다.
    • 렌더링 구성 요소는 선택기를 사용하여 프레젠테이션을 조정합니다.
    • AEM은 페이지의 모든 내부 링크에 모바일 선택기를 자동으로 추가합니다.

통계

모바일 장치를 통해 AEM 서버에 수행된 요청 수에 대한 통계를 확인할 수 있습니다. 요청 수는 다음과 같이 분류할 수 있습니다.

  • 장치 그룹 및 장치
  • 연간, 월 및 일

통계를 보려면

  1. 도구 콘솔로 이동합니다.

  2. 도구 > 모바일 아래 의 장치 통계 페이지를 엽니다.

  3. 링크를 클릭하여 특정 연도, 월 또는 일에 대한 통계를 봅니다.

통계 ​페이지는 다음과 같이 표시됩니다.

screen_shot_2012-02-01at24353pm

NOTE

[ 통계 ] 페이지는 모바일 장치가 AEM에 처음으로 액세스하고 감지될 때 만들어집니다. 그 전에는 사용할 수 없습니다.

통계에서 항목을 생성해야 하는 경우 다음과 같이 진행할 수 있습니다.

  1. 모바일 장치 또는 에뮬레이터를 사용합니다(예: Firefox의 https://chrispederick.com/work/user-agent-switcher/).

  2. 작성 모드를 비활성화하여 작성 인스턴스에서 모바일 페이지를 요청합니다(예::

    http://localhost:4502/content/geometrixx_mobile/en/products.html?wcmmode=disabled

이제 통계 페이지를 사용할 수 있습니다.

장치 그룹에 대해 렌더링되는 페이지는 장치 그룹 선택기로 페이지 URL에 구분되므로 모바일 페이지는 일반적으로 Dispatcher에서 분리할 수 있습니다 /content/mobilepage.touch.html. 선택기가 없는 모바일 페이지에 대한 요청은 캐시되지 않습니다. 이 경우 장치 감지는 작동하여 일치하는 장치 그룹(또는 해당 문제에 대해 "nomatch")으로 리디렉션됩니다. 장치 그룹 선택기로 렌더링된 모바일 페이지는 링크 리기록기에서 처리합니다. 링크 리기록기는 페이지 내의 모든 링크를 다시 기록하여 장치 그룹 선택기도 포함하므로 이미 자격을 갖춘 페이지에서 클릭할 때마다 장치 검색을 다시 수행하지 않습니다.

따라서 다음 시나리오가 발생할 수 있습니다.

사용자 Alice는 리디렉션되고 해당 URL을 장치 그룹에 속하는 다른 클라이언트를 사용하여 액세스하는 친구 Bob에게 coolpage.feature.html touch 보냅니다.

프런트 엔드 캐시에서 제공되는 경우 AEM coolpage.feature.html 는 요청을 분석하여 모바일 선택기가 새 사용자-에이전트와 일치하지 않는다는 것을 확인하도록 할 기회를 얻지 못하고 Bob이 잘못된 표현을 얻습니다.

이 문제를 해결하기 위해 페이지에 간단한 선택 UI를 포함할 수 있습니다. 여기서 최종 사용자는 AEM에서 선택한 장치 그룹을 무시할 수 있습니다. 위의 예에서, 페이지의 링크(또는 아이콘)를 사용하면 최종 사용자가 자신의 장치가 충분히 적합하다고 생각하는 coolpage.touch.html 경우 전환할 수 있습니다.

이 페이지에서는