我们希望在每个页面上显示一组默认的页眉和页脚组件。
在我的模板文件中,我有以下几行来自动包含组件:
<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>
答案 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", "") %>
它将尝试从当前资源获取myProperty
和otherProperty
,如果它们不存在,将使用来自祖先页面的适当资源。更多信息可以在class Javadoc。