我是 CQ 新手,如何在 Day(adobe) CQ5.4 中创建新的自定义节点类型,如 mycmpny:testNode
问问题
4013 次
2 回答
3
您可以像这样从工作区获取NodeTypeManager :
NodeTypeManager manager = session.getWorkspace().getNodeTypeManager();
manager.registerNodeTypes(myNewNodeType, true);
但是,您最好避免从一开始就使用模式,并在必要时稍后添加。请参阅 Michael Marth 的结构化或非结构化?在 JCR 中,您不必选择 另一种方式来看待这个问题。JCR 规范负责人 David Nuescheler对此表示赞同。
于 2013-01-28T09:27:30.733 回答
1
如果你看一下节点类型可以为你做什么,基本上有三件事:
- 给事物命名 - 但您也可以为此使用 Sling 的资源类型等约定
- 防止存储某些内容 - 但规则会随着时间而改变
- 提供有效的观察
第三点可能是引入自定义节点类型的最重要原因。如果您不想观察存储库某个部分中的所有更改,则节点类型提供了有效的过滤器。(这是从 Adobe CQ5 产品经理 Lars Trieloff 的帖子中捕获的)
这些几乎是使用自定义节点类型的唯一原因。我只在少数情况下使用了自定义节点类型,而且大多数情况下它与索引和复杂的 jcr 查询有关。从你的问题的声音来看,听起来你都没有做这些。我建议使用开箱即用的节点类型。
要创建一个新的节点类型,请创建一个名为 nodetypes 的文件夹并在其中放置一个 example.cnd 文件,其中包含以下内容
<'example'='http://www.somedomain.com/example'>
[example:Audit]
- * (undefined)
它还应该有一个 .content.xml
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
xmlns:rep="internal" jcr:mixinTypes="[rep:AccessControllable]"
jcr:primaryType="nt:folder" />
于 2013-08-20T16:34:43.857 回答