-1

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

4

2 回答 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

如果你看一下节点类型可以为你做什么,基本上有三件事:

  1. 给事物命名 - 但您也可以为此使用 Sling 的资源类型等约定
  2. 防止存储某些内容 - 但规则会随着时间而改变
  3. 提供有效的观察

第三点可能是引入自定义节点类型的最重要原因。如果您不想观察存储库某个部分中的所有更改,则节点类型提供了有效的过滤器。(这是从 Adob​​e 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 回答