buildout可以创建内容作为Plone安装的一部分吗?

Iai*_*lam 4 plone buildout

我正在尝试为一个站点实现Plone的可重复部署,并使用buildout,基本上遵循Martin Aspeli的书" Professional Plone 4 Development".我可以将系统设置为我的光源产品<site>.policy<site>.theme,并自动启动主题,但是当我运行扩建,我还是要实例化一个Plone站点并激活政策的产品,为网站创建标准的对象之前.

是否可以在安装过程中检查是否存在内容对象(如Plone站点对象或特定文件夹),如果它们不存在且设置正确,是否可以创建它们?我可以在单独的<site>.content产品中执行此操作,还是应该在<site>.policy

Mar*_*ers 6

原则上,buildout可以做任何你可以编写的代码,只要你创建一个配方来为你做这件事.

幸运的是,有人已经创建了一个为您创建plone站点的方法,称为collective.recipe.plonesite:

[buildout]
parts = 
    ...
    plonesite

[plonesite]
recipe = collective.recipe.plonesite
site-id = <site>
profiles-initial =
    <site>.policy.profile-default
post-extras =
    ${buildout}/src/<site>.content/site/content/create_content.py
Run Code Online (Sandbox Code Playgroud)

该配方提供了几个钩子,可以让您控制站点创建,并在创建站点之前或之后执行系统命令,或者在运行GS配置文件之前或之后执行额外的python代码.

在上面的示例中,post-extras运行create_content.py带有变量的脚本appsite设置:

from Products.CMFPlone.utils import _createObjectByType

if 'someobject' not in site:
    _createObjectByType('SomeType', site, 'someobject', title='Foo Bar')
Run Code Online (Sandbox Code Playgroud)