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

时间:2013-02-23 10:51:31

标签: plone buildout

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

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

1 个答案:

答案 0 :(得分: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

该配方提供了几个钩子,可以控制站点创建,在创建站点之前或之后执行系统命令,或者在运行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')