我正在尝试为阶段编写一个freemarker模板,用于检查是否为此页面定义了一个阶段,如果没有,则尝试从其父页面继承该阶段。 标准继承(如默认情况下,例如页脚)对我不起作用,因为如果需要,用户仍然可以为子页面定义不同的阶段。
我已经有一个在Magnolia 4.4中使用的模板,但由于模板API的各种变化,这在4.5中无法使用。所以我试着让它适应4.5:我正在使用cmsfn.inherit()函数来查找父内容,然后访问这个内容的阶段,但我一直收到错误(说它没有指定)。
我的模板:
<div id="stage" style="color: white;">
[#if content??]
[@cms.component content=content /]
[#else]
[#assign inheritedContent = cmsfn.inherit(cmsfn.content(state.mainContent.@handle)) /]
[#if cmsfn.isEditMode()]
Inherited content: ${inheritedContent}
[/#if]
[@cms.component content=inheritedContent.stage /]
[/#if]
</div><!-- end stage -->
错误讯息:
The 'content' parameter was passed but not or wrongly specified. The problematic instruction:
----------
==> user-directive cms.component [on line 17, column 17 in ***/pages/home/inheritStage.ftl]
答案 0 :(得分:3)
也许我的答案太迟了,但如果其他人发现这个: 在magnolia cms 4.5中继承内容的方式有所改变 - 现在使用原型配置有点不同了:
在您的作者实例中转到模板工具包&gt;网站配置,然后转到模板 - &gt; prototype-&gt; area-&gt; YOURAREA并添加一个名为“inheritance”的新内容节点并为其创建节点数据。
节点数据:
组件 - 这可以是“all”(所有组件都是继承的),“filtered”(继承属性设置为true的所有组件都是继承的)或“none”(不言自明) 启用 - 不言自明
如果您决定继承“已过滤”的组件,请不要忘记将继承对话框选项添加到相关组件中
如果你想看一个工作实例看看“extras”原型。