我正在开始的Magnolia CMS项目中工作。在一开始我阅读文档并遵循他们在网络上的学院课程。之后我被委托建立一个新模块。最简单的方法是复制现有的方法。我做到了,但没有按预期工作。我修改了路径,但仍然没有按预期工作。所以我发现我必须创建一个新模块必须指向的节点。我不知道如何创建[mgnl:content]
。有人有经验并可以帮助我吗?先谢谢你!
答案 0 :(得分:2)
要创建节点,您只需拨打MgnlContext.getJCRSession("workspace name").getRootNode().addNode("path/to/my/node", "mgnl:content")
,但不您要在此处执行的操作。
您需要在此处执行的操作是正确编写模块描述符并将其放置在模块结构中的正确位置。在documentation中详细了解相关信息。
你的帖子中的另一个误解是认为复制模块是制作模板的最简单方法。这完全错了。制作模块的最佳方法是使用maven原型mvn archetype:generate -DarchetypeCatalog=https://nexus.magnolia-cms.com/content/groups/public/
再次在documentation中对此进行了更多解释。
答案 1 :(得分:2)
您可以通过添加以下代码来创建新的节点类型:
<?xml version="1.0" encoding="UTF-8"?>
<nodeTypes xmlns:mgnl="http://www.magnolia.info/jcr/mgnl">
<nodeType name="mgnl:navitem" isMixin="false" hasOrderableChildNodes="true" primaryItemName="">
<supertypes>
<supertype>mgnl:content</supertype>
</supertypes>
</nodeType>
</nodeTypes>
这应该在:
{mgnl-root}/{mgnl-module-name}/resources/mgnl-nodetypes/navitem.xml
答案 2 :(得分:0)
这是我对nodetype的定义:
<nodeTypes
xmlns:rep="internal"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
xmlns:mix="http://www.jcp.org/jcr/mix/1.0"
xmlns:mgnl="http://www.magnolia.info/jcr/mgnl"
xmlns:jcr="http://www.jcp.org/jcr/1.0">
<!-- custom node types -->
<nodeType name="mgnl:(YOUR NODETYPE´S NAME)" isMixin="false" hasOrderableChildNodes="true" primaryItemName="">
<supertypes>
<supertype>mgnl:content</supertype>
</supertypes>
</nodeType>
</nodeTypes>
您文件夹中的此定义:\ src \ main \ resources \ mgnl-nodetypes