在CQ如何禁用子页面属性对话框中的任何字段?

时间:2013-02-22 09:03:30

标签: content-management-system cq5

我在页面属性> Basic中添加了一个新的选择类型字段“Theme”。 现在,如果我在WCM中使用相同的模板添加新页面,那么我也是 我得到选项“主题”,这是非常明显的。 有什么方法可以隐藏子页面中的字段吗?

P.S这种情况正在发生,因为我正在为子页面使用相同的模板。

2 个答案:

答案 0 :(得分:3)

您不能使用相同的模板,并且页面属性对话框也不同。

你可以做的是重载对话框

  • 创建一个新模板和相应的resourceType组件 继承你当前的。
  • 复制您希望与组件的最低父级不同的对话框或选项卡。确保对话框是组件下的唯一节点。
  • 在对话框中进行所需的更改。

然后,您必须在页面jsp中包含代码以获取父页面属性,如:

// if the parent page is always a certain level below the root you can use
// currentPage.getAbsoluteParent(3); to get the third page down from the top
// of the current path tree.
Page parentPage = currentPage.getParent();

ValueMap parentPageProperties;

if (parentPage != null) {
    parentPageProperties = parentPage.getProperties();
}

// This tries to get the property 'theme' from the current page. If that fails
// then it tries to get the property from the parent page. If that fails it 
// defaults to blank.
theme = properties.get("theme", parentPageProperties.get("theme", ""));

答案 1 :(得分:0)

快速解决方案还可以是创建第二组模板/页面组件。假设您有模板A,它使用页面组件B作为资源类型:

  • 创建模板X并使用allowedParents allowedChildren和allowedPaths属性进行播放,以便两者是独占的(实际解决方案取决于您的内容架构)
  • 赋予X与A
  • 相同的标题
  • 创建扩展B的页面组件Y,并定义它自己的对话框
  • 使用xtype = cqinclude使Y的对话框重新使用B中的任何标签(参见基础页面的对话框以供参考)