能扩建创建内容作为一个Plone安装的一部分?(Can buildout create conten

2019-07-20 10:19发布

我试图达到的Plone的网站可重复的部署和使用扩建,基本上遵循马丁Aspeli的书专业Plone 4中发展 。 我可以将系统设置为我的源产品<site>.policy<site>.theme ,并自动启动主题,但是当我运行扩建,我还是要实例化一个Plone站点并激活政策的产品,之前创建该网站的标准对象。

能扩建检查像安装在Plone站点对象或特定文件夹的内容对象的存在,并创造他们,如果不正确的设置它们存在? 我可以这样做,在一个单独的<site>.content产品,或者这应该在处理<site>.policy

Answer 1:

原则上扩建可以做任何你能代码,只要您创建一个食谱做的东西给你。

幸运的是,有人已经创建了一个配方创建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')


文章来源: Can buildout create content as part of a Plone install?