如何在adobe CQ中创建新的自定义节点类型

时间:2013-01-27 06:23:39

标签: jackrabbit cq5 jcr sling

我是CQ的新手,如何在Day(adobe)CQ5.4中创建新的自定义节点类型,如mycmpny:testNode

2 个答案:

答案 0 :(得分:3)

您可以从工作区获得NodeTypeManager,如下所示:

NodeTypeManager manager = session.getWorkspace().getNodeTypeManager();
manager.registerNodeTypes(myNewNodeType, true);

当天网站上有custom node typesadministration的其他信息。

但是,您可能最好避免使用模式,并在必要时稍后添加。看看Michael Marth的Structured or unstructured? In JCR you do not have to choose是另一种看法。这是echoed by JCR spec lead David Nuescheler

答案 1 :(得分:1)

如果你看看哪种节点类型可以为你做,基本上有三件事:

  1. 为事物命名 - 但你也可以使用像Sling这样的惯例 此资源类型
  2. 阻止存储某些内容 - 但规则会 随时间变化
  3. 提供有效的观察
  4. 第三点可能是引入自定义节点类型的最重要原因。如果您不想观察存储库某个部分的所有更改,那么节点类型可提供有效的过滤器。 (这是从Adobe CQ5产品经理Lars Trieloff的帖子中捕获的)

    这几乎是使用自定义节点类型的唯一原因。我在一些场景中只使用了自定义节点类型,而且大多数情况下它与索引和复杂的jcr查询有关。从你的问题的声音,听起来你没有做这些。我建议使用out of box节点类型。

    要创建新节点类型,请创建一个名为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" />