使用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'值。
我错过了什么?
答案 0 :(得分:4)
要从页面层次结构中的任何位置继承属性,您需要使用cmsfn.inheritProperty(content, "your-prop-name")
。
如上所述仅使用stkfn.siteRoot(content)
,将返回网站的根节点,因此如果在层次结构中的任何位置覆盖了值,则您将看不到。
HTH, 扬
答案 1 :(得分:1)
所以在遭受“代码”之后失明,我意识到要实现我想要的财产使用的行为:
stkfn.siteRoot(content)
这使得所有子页面都能够接收父页面属性。
答案 2 :(得分:0)
[#assign hideHeader = content.hideHeader!false]
public Property inheritProperty(Node content, String relPath)
在freemarker中,您应该执行以下操作:
cmsfn.inheritProperty(content, "hideHeader ");