2013-08-02 3 views
0

일부 배경 : 응답 성있는 웹 사이트의 왼쪽에 슬라이딩 탐색 구성 요소를 만들려고합니다. 메뉴의 모든 항목 옆에 design_dialog를 사용하여 구성된 이미지를 포함하고 싶습니다.Adobe CQ5 글로벌 구성 요소

내가 CQ를 실행하고 5.6.1

내가 실행 해요 문제, 나는 현재하고 "홈페이지", "contentpage"와 "contactpage"템플릿이 있습니다. 모든 3은 기본 "페이지"구성 요소에서 파생 된 해당 구성 요소로 렌더링됩니다.

이 페이지 구성 요소에는 내 navpanel 구성 요소를 포함하고있는 body.jsp가 있습니다. 모든 것은 잘 작동하지만 홈 페이지에서 navpanel의 이미지를 설정할 때 다른 두 이미지에는 표시되지 않습니다. (즉 /etc/designs/testsite/jcr:content/navpanel) 절대 경로에 포함 navpanel 포함, 나는 CQ에 경로 변수를 설정하려고 할 때 /etc/designs/testsite/jcr:content/homepage/navpanelbody.jsp에서

이 :

은 내가 navpanel 디자인 경로이기 때문에 이것에 대한 이유는 알 API에 따르면 절대 경로를 취해야하며 전혀 수정하지 않아야합니다. 대신 currentStyle.getPath()을 출력 할 때 첫 번째 경로 (홈페이지 포함)가 계속 표시됩니다.

내 목표를 달성하려면이 구성 요소의 디자인 경로를 '글로벌'수준으로 구성하고 템플릿 디자인 내에 중첩되지 않도록 구성 할 수 있어야합니다.

프로그래밍 방식으로이 값을 변경할 수 있습니까? cq:include path이 의도 한대로 동작하지 않는 버그가있는 것 같습니까?

답변

0

cq : include가 디자인 경로에서 구성 요소로로드되지 않았습니다 (사용자가하려는 것처럼 들립니다).

는 CQ :

또는 (경로와 resourceType에서 속성을 사용) 구성 요소 예 :

currentStyle 여전히 가져올 것 중 하나가 변경되었습니다 포함 예를 들어 (스크립트 속성을 사용하여) 정적 스크립트가 포함되어 현재 템플릿의 designPath에 대해이 구성 요소의 스타일을 지정합니다.

로고 (디자인 모드)를 다른 것으로 전환 한 다음 다른 템플릿으로 이동하면 예를 들어 geometrixx 데모 사이트에서 똑같은 것을 볼 수 있습니다. 다른 템플릿을 사용하는 페이지에는 이전 로고가 계속 표시됩니다. 그렇기 때문에 작업을 디자인 모드에있는 템플릿으로 제한하지 않는 한 디자인 모드에서 가능한 한 적게 수행하는 것이 좋습니다. 예를 들어 특정 템플릿에서 사용할 수있는 구성 요소를 제한하는 것은 디자인 모드를 유용하게 사용합니다.

원본과 동일한 데이터를 사용하는 "글로벌"구성 요소를 만드는 것이 그리 쉽지는 않습니다. 귀하의 경우 저장소에서 일반적인 위치로 /에서 이미지를 저장 /로드하여이 문제를 해결할 수 있습니다. 아마도이 "공통 위치"를 구성 가능하게 만드는 서비스를 구현할 수도 있습니다. 또는 서비스를 추가로 가져 와서 이미지를로드/저장하도록 할 수도 있습니다.

+0

cq에 대한 CQ API에 따르면 : 포함 : '현재 요청 처리에 포함될 자원 객체의 경로. 이 경로가 상대 경로이면 스크립트는 주어진 리소스를 포함하는 현재 리소스의 경로에 추가됩니다. ' 이렇게하면 절대 경로를 지정하면 리소스 객체의 위치를 ​​지정할 수 있습니다. 이것이 실제로 작동하지 않는 이유는 무엇입니까? 전 세계적으로 접근 가능한 객체가 실현 가능해야하며, '경로'가 의도 한대로 작동하지 않는 것 같으므로 어떻게해야하는지에 대해 더 많은 정보가 필요하다고 전적으로 믿습니다. –

+0

당신은 절대 경로가 옵션이지만, 이것이 내가 아는 한 설계 경로에서 작동하지 않는다는 것을 언급하는 것이 매우 옳습니다. 실제 리소스의 경우 정상적으로 작동합니다. 예 : 이 작동합니다. – 3xil3

0

조금 늦었지만 구성 요소를 글로벌 (권한있는 구성 요소)으로 만든 방법을 공유하고 싶었습니다.

절대 경로 사용이 전혀 작동하지 않았습니다 (거의, 거의).

  1. 그들 모두가 기본 페이지 구성 요소에서 확장 할 수 있도록 우리가 메뉴 구성 요소를 공유하는 10 페이지가

    가의가 있다고 가정 해 봅시다 : 여러 페이지가 글로벌 부품을 공유하려면, 우리는 경로의 속성이 방법을했다.
  2. 페이지를 확장하고 포함 할 공유 구성 요소 (예 : <cq:include path="mysharedcomponent" resourceType="myapp/components/mysharedcomponent" />)에 대한 상대 경로가있는 페이지를 하나만 만듭니다 (myapp/components/pages/A라고 함).
  3. 나머지 페이지는 페이지를 확장하고 공유 구성 요소의 절대 경로 (예 : <cq:include path="/myapp/A/jcr:content/mysharedcomponent" resourceType="myapp/components/mysharedcomponent" />)를 사용하십시오. 공유 구성 요소에 자식을 끌어 모두에 해당 구성 요소를 사용할 수 :

이 방법은 CQ에서 글로벌 구성 요소가 여러 템플릿 페이지들 사이에서 공유 및 편집 모드에서 작업하는 경우도 지원 드래그 & 드롭 기능을 수행하도록 사용을 할 수있다 페이지.

관련 문제