生成文件夹后生成Plone自动内容

时间:2016-08-10 08:55:18

标签: plone plone-5.x

我被要求在我的Plone安装上实现以下内容:

  

用户创建新文件夹后,应将其转发给   创建一个新页面,然后应该是该页面的默认视图   文件夹中。

我尝试使用内容规则来实现这一点,但不幸的是,这种行为不受支持。

你对实现这种行为的建议是什么?

4 个答案:

答案 0 :(得分:3)

以下内容应该是您的问题的解决方案

在events.py中定义一个Eventhandler

def notifyFolderIsAdded(folder, event):
    folder.REQUEST.RESPONSE.redirect(folder.absolute_url() + "/++add++Document")

在configure.zcml中注册EventHandler

<subscriber
   for="plone.app.contenttypes.interfaces.IFolder
        zope.lifecycleevent.interfaces.IObjectAddedEvent"
   handler=".events.notifyFolderIsAdded" />

查看Plone文档中的EventsEvent Handlers

答案 1 :(得分:3)

创建一个新的内容类型,作为文件夹的克隆,由富文本字段扩展。这是一个基于Archetypes的工作示例: https://github.com/ida/adi/tree/master/adi.subsection

它附带两个视图模板,一个仅显示文本字段,另一个显示文本字段项目的子项列表。

答案 2 :(得分:3)

我认为@ Ida的想法是您的客户可能会选择的一个很好的解决方案。当你知道如何做灵巧时,它很快就能做到。

我们将执行以下操作:

  • 通过RichText行为将Rich Text字段添加到原始文件夹类型(或者如果您愿意,则为文件夹类型的克隆)
  • 允许该文件夹类型使用document_view - 通常仅由页面/文档使用的视图。
  • 默认使用document_view
  • 的文件夹类型

将以下内容添加到my.addon/my/addon/profiles/default/types/Folder.xml的Plone插件:

<?xml version="1.0"?>
<object name="Folder" meta_type="Dexterity FTI" i18n:domain="plone"
   xmlns:i18n="http://xml.zope.org/namespaces/i18n">

  <!-- View information -->
  <property name="default_view">document_view</property>
  <property name="view_methods" purge="False">
    <element value="document_view" />
  </property>

  <property name="behaviors" purge="False">
    <element value="plone.app.contenttypes.behaviors.richtext.IRichText"/>
  </property>

</object>

然后在同一个插件中的任何configure.zcml(我使用浏览器文件夹中的那个,但我确定它并不重要)中粘贴它:

<configure package="plone.app.contenttypes.browser">
  <browser:page
      name="document_view"
      for="plone.app.contenttypes.interfaces.IFolder"
      template="templates/document.pt"
      layer="plone.app.contenttypes.interfaces.IPloneAppContenttypesLayer"
      permission="zope2.View"
      menu="plone_displayviews"
      title="View as Document"
      />
</configure>

以这种方式处理的问题是,如果客户想要将事物恢复为正常的Plone行为,那么他们需要将每个文件夹中的Rich Text复制到新的页面中。

顺便说一句,您可以为purge="False"中的view_methods属性设置Folder.xml,以阻止用户选择文件夹的任何其他视图。

答案 3 :(得分:2)

有一个应用程序;)

有第三方内容规则允许您设置默认视图。只需将sc.contentrules.layout添加到您的扩展中。

另外,您可以添加另一个包以允许通过Web进行Python脚本操作(以便将用户重定向到文档创建)。有两个选项,不确定它们是否已更新: