Um die Factory Type Informations hinzuzufügen, erstellen wir in profiles/default das Profil types.xml:
<?xml version="1.0"?> <object name="portal_types"> <object name="vs.registration.registration" meta_type="Dexterity FTI" /> <object name="vs.registration.attendee" meta_type="Dexterity FTI" /> </object>
- Um Konflikte zu vermeiden, wird der Paketname vorangestellt.
- Als meta_type muss Dexterity FTI verwendet werden.
Anschließend wird der Ordner profiles/default/types erstellt, in dem wir die Profile unserer beiden Artikeltypen erstellen, zunächst vs.reigistration.attendee.xml:
<?xml version="1.0"?> <object name="vs.registrtion.attendee" meta_type="Dexterity FTI" i18n:domain="vs.registration" xmlns:i18n="http://xml.zope.org/namespaces/i18n"> <!-- Basic metadata --> <property name="title" i18n:translate="">Attendee</property> <property name="description" i18n:translate="">An attendee</property> <property name="content_icon">user.gif</property> <property name="allow_discussion">True</property> <property name="global_allow">False</property> <property name="filter_content_types">False</property> <property name="allowed_content_types" /> <!-- schema interface --> <property name="schema">vs.registration.attendee.IAttendee</property> <!-- class used for content items --> <property name="klass">plone.dexterity.content.Item</property> <!-- add permission --> <property name="add_permission">cmf.AddPortalContent</property> <!-- enabled behaviors --> <property name="behaviors"> <element value="plone.app.content.interfaces.INameFromTitle" /> </property> <!-- View information --> <property name="default_view">view</property> <property name="default_view_fallback">False</property> <property name="view_methods"> <element value="view"/> </property> <!-- Method aliases --> <alias from="(Default)" to="(dynamic view)"/> <alias from="edit" to="@@edit"/> <alias from="sharing" to="@@sharing"/> <alias from="view" to="(selected layout)"/> <!-- Actions --> <action title="View" action_id="view" category="object" condition_expr="" url_expr="string:${object_url}" visible="True"> <permission value="View"/> </action> <action title="Edit" action_id="edit" category="object" condition_expr="" url_expr="string:${object_url}/edit" visible="True"> <permission value="Modify portal content"/> </action> </object>
Anschließend erstellen wir noch registration.xml:
<?xml version="1.0"?> <object name="vs.registration.registration" meta_type="Dexterity FTI" i18n:domain="vs.registration" xmlns:i18n="http://xml.zope.org/namespaces/i18n"> <!-- Basic metadata --> <property name="title" i18n:translate="">Registration</property> <property name="description" i18n:translate="">A folderish content type for attendees</property> <property name="content_icon">folder_icon.gif</property> <property name="allow_discussion">False</property> <property name="global_allow">True</property> <property name="filter_content_types">True</property> <property name="allowed_content_types"> <element value="vs.registration.attendee" /> </property> <!-- schema interface --> <property name="schema">vs.registration.registration.IRegistration</property> <!-- class used for content items --> <property name="klass">plone.dexterity.content.Container</property> <!-- add permission --> <property name="add_permission">cmf.AddPortalContent</property> <!-- enabled behaviors --> <property name="behaviors"> <element value="plone.app.content.interfaces.INameFromTitle" /> </property> <!-- View information --> <property name="default_view">view</property> <property name="default_view_fallback">False</property> <property name="view_methods"> <element value="view"/> </property> <!-- Method aliases --> <alias from="(Default)" to="(dynamic view)"/> <alias from="edit" to="@@edit"/> <alias from="sharing" to="@@sharing"/> <alias from="view" to="(selected layout)"/> <!-- Actions --> <action title="View" action_id="view" category="object" condition_expr="" url_expr="string:${object_url}" visible="True"> <permission value="View"/> </action> <action title="Edit" action_id="edit" category="object" condition_expr="" url_expr="string:${object_url}/edit" visible="True"> <permission value="Modify portal content"/> </action> </object>
Schließlich können Sie Ihre Instanz starten mit:
$ ./bin/instance fg
Beim Erstellen einer neuen Plone-Site wählen Sie das Profil vs.registration. Und nachdem die Site erstellt wurde, sollten Sie Registration im hinzufügen-Menü finden. Schließlich sollten Sie in dem Artikel vom Typ Registration einen Attendee hinzufügen können.