2

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

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

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

2 回答 2

0

我遇到了同样的情况,我找到了这个可行的解决方案。

设置cq:noDecorationfalse针对您想要这样的组件(页眉和页脚)

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

于 2013-09-27T16:56:53.150 回答
0

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

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

它将尝试从当前资源中获取myProperty和获取otherProperty,如果它们不存在,则将使用来自祖先页面的适当资源。更多信息可以在Javadoc 类中找到。

于 2013-09-27T17:07:38.210 回答