我正在尝试为一个站点实现Plone的可重复部署,并使用buildout,基本上遵循Martin Aspeli的书" Professional Plone 4 Development".我可以将系统设置为我的光源产品<site>.policy及<site>.theme,并自动启动主题,但是当我运行扩建,我还是要实例化一个Plone站点并激活政策的产品,为网站创建标准的对象之前.
是否可以在安装过程中检查是否存在内容对象(如Plone站点对象或特定文件夹),如果它们不存在且设置正确,是否可以创建它们?我可以在单独的<site>.content产品中执行此操作,还是应该在<site>.policy?
原则上,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带有变量的脚本app并site设置:
from Products.CMFPlone.utils import _createObjectByType
if 'someobject' not in site:
_createObjectByType('SomeType', site, 'someobject', title='Foo Bar')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |