使用Magnolia 4.5.3中的自定义ftl文件继承阶段

时间:2012-07-09 08:57:51

标签: freemarker magnolia

我正在尝试为阶段编写一个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 个答案:

答案 0 :(得分:3)

也许我的答案太迟了,但如果其他人发现这个: 在magnolia cms 4.5中继承内容的方式有所改变 - 现在使用原型配置有点不同了:

在您的作者实例中转到模板工具包&gt;网站配置,然后转到模板 - &gt; prototype-&gt; area-&gt; YOURAREA并添加一个名为“inheritance”的新内容节点并为其创建节点数据。

节点数据:

组件 - 这可以是“all”(所有组件都是继承的),“filtered”(继承属性设置为true的所有组件都是继承的)或“none”(不言自明) 启用 - 不言自明

如果您决定继承“已过滤”的组件,请不要忘记将继承对话框选项添加到相关组件中

如果你想看一个工作实例看看“extras”原型。