2015-04-15 3 views
0

Я работаю над проектом Magnolia CMS, который уже запущен. В самом начале я читал документацию и следил за классом академии, который у них есть в Интернете. После этого мне было поручено построить новый модуль. Самый простой способ - копирование существующего. Я сделал это, но это не сработало, как ожидалось. Я изменил путь, но все еще не работает должным образом. Поэтому я обнаружил, что мне нужно создать узел, который должен указать новый модуль. Я не знаю, как создать [mgnl:content]. У кого-то есть опыт и может дать мне руку? Спасибо, заранее!Создание узла в Magnolia CMS

ответ

2

Чтобы создать узел, вы можете просто позвонить MgnlContext.getJCRSession("workspace name").getRootNode().addNode("path/to/my/node", "mgnl:content"), но это NOT, что вы хотите сделать здесь.

Все, что вам нужно сделать, это написать дескриптор модуля справа и поместить его в правильное место в структуре вашего модуля. Узнайте больше об этом в documentation.

Другое заблуждение в вашем сообщении - думать, что копирующий модуль - самый простой способ его создать. Это совершенно неправильно. Лучший способ сделать модуль - использовать maven archetype mvn archetype:generate -DarchetypeCatalog=https://nexus.magnolia-cms.com/content/groups/public/ и снова есть больше объяснений об этом в documentation.

+0

Ян, спасибо за ваш ответ, но из-за моего невежества я летел слепой. Я пытаюсь понять, что он сделал, и включить то, что мне нужно. Модуль выполнен. Он имеет субапп, и каждый имеет свой [mgnl: content], где указывает путь. Мне нужно сделать [mgnl: content] для нового субаппера. Я ценю любую помощь. Большое спасибо! – oneme

+0

звучит больше похоже на то, что вы разрабатываете приложение, а не модуль (два не то же самое, один модуль может иметь несколько приложений). И даже не полное приложение, а только супаппинг в существующем приложении. Для этого должно быть достаточно просто создать узел через интерфейс пользователя Magnolia и настроить все необходимые свойства и подузлы. Возможно, вы хотите пройти учебное пособие по написанию полного приложения, чтобы ознакомиться с различными частями разработки приложений. Вы можете найти один такой учебник по адресу https://documentation.magnolia-cms.com/display/DOCS/My+first+content+app – Jan

+0

Я следил за учебником, в части: Вот как создать собственное приложение для контента : Вариант 1: Скопируйте приложение Скопируйте узлы конфигурации существующего приложения контента в новое приложение. Вы можете скопировать один из родных приложений Magnolia, таких как Контакты. Экспортируйте скопированные узлы конфигурации в XML. Откройте XML в текстовом редакторе. Найдите и замените имена элементов. Например, если ваше приложение управляет яблоками вместо апельсинов, замените яблоко оранжевым. Импортируйте XML обратно в Magnolia. Зарегистрируйте новое рабочее пространство в дескрипторе модуля и создайте новый тип узла. Я не могу зарегистрировать приложение. – oneme

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

0

That's мое определение 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

Смежные вопросы