在iParsys中放置默认组件

时间:2013-09-27 12:53:07

标签: templates components cq5

我们希望在每个页面上显示一组默认的页眉和页脚组件。

在我的模板文件中,我有以下几行来自动包含组件:

<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>

2 个答案:

答案 0 :(得分:0)

我遇到了同样的情况&amp;我找到了这个全面的解决方案。

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文件中(页眉和页脚)。

<%
    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供参考。

答案 1 :(得分:0)

HierarchyNodeInheritanceValueMap似乎是正确的解决方案。在页眉/页脚组件JSP中,您可以使用它:

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

它将尝试从当前资源获取myPropertyotherProperty,如果它们不存在,将使用来自祖先页面的适当资源。更多信息可以在class Javadoc

中找到