我正在使用 Plone Member Folders 功能,其中在成员登录时创建某个成员的文件夹。
如何添加一些要在登录时创建的文件夹?不仅有成员名称的文件夹,还有里面的一些文件夹?
您可以创建一个notifyMemberAreaCreated
皮肤方法来在新创建的成员文件夹中添加额外的内容。该脚本将在这个新文件夹的上下文中调用。
之所以必须是皮肤脚本,而不是视图或事件处理程序,是因为 Plone 的这一部分源于 CMF 中的一个较旧的功能,该功能尚未更新为更现代的 API 标准。
这是一个示例notifyMemberAreaCreated.py
python 皮肤脚本:
## Script (Python) "notifyMemberAreaCreated"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=Modify new member area
##
context.invokeFactory('Folder',id='subfolder')
context.subfolder.setTitle('Your new subfolder')
context.reindexObject()
您可能必须为此脚本赋予Manager
代理角色。如果您在文件系统上定义此皮肤脚本,则在您的自定义皮肤层中,添加一个.metadata
文件(名为notifyMemberAreaCreated.py.metadata
)来设置此代理角色:
[default]
proxy=Manager
在 Plumi (http://pypi.python.org/pypi/plumi.app) 中,您可以看到它是如何完成的。最初在plumi.app 的配置文件中的文件夹结构是在安装时在所谓的default_member_area 中创建的。在 notifyMemberAreaCreated.py 中,default_member_area 被复制到新的成员文件夹中。