4

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

buildout 是否可以在设置过程中检查内容对象(如 Plone 站点对象或特定文件夹)的存在,如果它们不存在并使用正确的设置创建它们?我可以在单独的<site>.content产品中做到这一点,还是应该在<site>.policy?

4

1 回答 1

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')
于 2013-02-23T14:11:40.747 回答