Размещение компонентов по умолчанию в iParsys

У нас есть стандартный набор компонентов верхнего и нижнего колонтитула, которые мы хотим отображать на каждой странице.

В моих файлах шаблонов у меня есть строки, подобные следующим, для автоматического включения компонентов:

<cq:include path="thecomponent" resourceType="/path/to/component"  />

Однако параметры компонентов не наследуются вплоть до дочерних страниц, поэтому нашим пользователям придется перестраивать свои верхние и нижние колонтитулы каждый раз, когда они создают новую страницу. Есть ли в моем файле шаблона способ автоматического размещения этих компонентов в iParsys?

Эта попытка не увенчалась успехом, но я думаю, что она иллюстрирует то, что я хочу сделать:

<cq:include path="PageTop" resourceType="/libs/foundation/components/iparsys">   
    <cq:include path="thecomponent" resourceType="/path/to/component"  />  
    <cq:include path="theOthercomponent" resourceType="/path/to/other/component"  />
</cq:include>

person bstockwell    schedule 27.09.2013    source источник


Ответы (2)


Я столкнулся с той же ситуацией, и я нашел это обходное решение.

Установите cq:noDecoration в false для ваших компонентов (верхний и нижний колонтитулы), которые вы хотите что-то вроде этого

<cq:include path="PageTop" resourceType="/libs/foundation/components/iparsys">   
    <cq:include path="thecomponent" resourceType="/path/to/component"  />  
    <cq:include path="theOthercomponent" resourceType="/path/to/other/component"  />
</cq:include>

Теперь, чтобы динамически изменить значения cq:noDecoration на true, вы должны включить этот код в файл jsp вашего компонента (header & footer).

<%
    String defaultCanonicalURL = request.getRequestURL().toString();
    String[] template = defaultCanonicalURL.split("/");
    String templateName = template[template.length-2].toString(); // getting template name


    if(templateName.equals("your-desired-template-name")){
        componentContext.setDecorate(true);    
    }
%>

Надеюсь, поможет .

http://dev.day.com/docs/en/cq/current/developing/components.html для справки.

person anasanjaria    schedule 27.09.2013

HierarchyNodeInheritanceValueMap здесь кажется правильным решением. В компонентах JSP верхнего/нижнего колонтитула вы можете использовать его следующим образом:

<%
    HierarchyNodeInheritanceValueMap map;
    map = new HierarchyNodeInheritanceValueMap(resource);
%>
...
some inherited property: <%= map.getInherited("myProperty", "") %><br/>
other inherited property: <%= map.getInherited("otherProperty", "") %>

Он попытается получить myProperty и otherProperty из текущего ресурса, и если они не существуют, будут использованы соответствующие ресурсы со страниц-предков. Дополнительную информацию можно найти в класс Javadoc.

person Tomek Rękawek    schedule 27.09.2013