Magnolia CMS:财产继承

时间:2014-08-19 16:32:28

标签: magnolia

使用Magnolia CMS,我试图通过所有子页面继承属性。 该属性从基页对话框设置。

基本上它只是一个复选框,用于切换在主页面模板中测试的显示/隐藏布尔值(子页面也使用)。

对话框控件组件' hideHeader'有这种结构:

::hideHeader
  .buttonLabel: Hide
  .class: info.magnolia.ui.form.field.definition.CheckboxFieldDefinition;
  .defaultValue: true;
  .i18n: true;
  .inheritable: true;
  .label: hide;
  .type: Boolean;

将其添加到基页对话框中。

我在模板中访问该属性,如:

[#assign hideHeader = false /]

[#if content.hideHeader?? && content.hideHeader?has_content ]
  [#assign hideHeader = content.hideHeader /]
[/#if]

我无法在子页面中使用它。它没有从对话框中获取设定值,只是默认的' false'值。

我错过了什么?

3 个答案:

答案 0 :(得分:4)

要从页面层次结构中的任何位置继承属性,您需要使用cmsfn.inheritProperty(content, "your-prop-name")

如上所述仅使用stkfn.siteRoot(content),将返回网站的根节点,因此如果在层次结构中的任何位置覆盖了值,则您将看不到。

HTH, 扬

答案 1 :(得分:1)

所以在遭受“代码”之后失明,我意识到要实现我想要的财产使用的行为:

stkfn.siteRoot(content)

这使得所有子页面都能够接收父页面属性。

答案 2 :(得分:0)

  1. 而不是上面的所有代码,您只需使用:
  2. [#assign hideHeader = content.hideHeader!false]

    1. 要继承属性,您在TemplatingFunctions
    2. 中有功能

      public Property inheritProperty(Node content, String relPath)

      在freemarker中,您应该执行以下操作:

      cmsfn.inheritProperty(content, "hideHeader ");