在 Magnolia 4.5.3 中使用 cusom ftl 文件继承阶段
Posted
技术标签:
【中文标题】在 Magnolia 4.5.3 中使用 cusom ftl 文件继承阶段【英文标题】:Inherit stage using cusom ftl file in Magnolia 4.5.3 【发布时间】:2012-07-08 15:56:00 【问题描述】:我正在尝试为阶段编写一个 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]
【问题讨论】:
【参考方案1】:也许我回答得太晚了,但如果其他人发现了这个: 在 magnolia cms 4.5 中继承内容的方式发生了一些变化 - 现在使用原型配置做了一些不同的事情:
在您的作者实例中转到模板工具包->站点配置,然后转到模板->原型->区域->您的区域并添加一个名为“继承”的新内容节点并为其创建节点数据。
节点数据:
components - 这可以是“all”(所有组件都被继承)、“filtered”(继承属性设置为 true 的所有组件都被继承)或“none”(不言自明) 启用 - 不言自明
如果您决定继承“过滤”组件,请不要忘记为相关组件添加继承对话框选项
如果您想查看一个工作示例,请查看“附加”原型。
【讨论】:
是的,我知道这个选项,但是在这种情况下,您无法编辑子站点上的继承内容,这就是我们想要的......我们现在通过手动实现继承来做到这一点区域模型类(Java 中)。不是最好的解决方案,但它有效。但无论如何,我为你的努力给了你 +1... ;-)以上是关于在 Magnolia 4.5.3 中使用 cusom ftl 文件继承阶段的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Magnolia 应用程序中使用 FreeMarker 模板?