【问题标题】:Can buildout create content as part of a Plone install?buildout 可以创建内容作为 Plone 安装的一部分吗?
【发布时间】:2013-02-23 10:51:31
【问题描述】:

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

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

【问题讨论】:

    标签: plone buildout


    【解决方案1】:

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

    幸运的是,有人已经为您创建了一个创建克隆站点的方法,称为 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')
    

    【讨论】:

    • 这真的很有用!标准文件夹、空白页等内容对象呢?
    • @IainHallam:您有两个选择:创建自己的 python 方法,或使用(有限的)通用设置支持来创建内容。我在我的项目中使用前者,因为它更加灵活。使用post-extras 运行它。
    • @MartijnPieters:只是为了澄清:buildout.cfg-example 的最后一行也可以更改为 '${buildout}/src/.content//content/ create_content.py',使用变量两次?
    • @IdaEbkes:这不是变量; OP 在问题中使用了&lt;site&gt;,我对此表示赞同,但第二次忘记了。虽然它是一个占位符示例名称,但 buildout 仅支持 ${section:name} 变量。
    • 如果有人想要一个完全标准的 plone 5.1 站点,就像手动按下“添加 plone 站点”按钮一样,添加这些配置文件:profiles-initial = plone.app.caching:default plone.app .contenttypes:plone-content plonetheme.barceloneta:default
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 2012-03-24
    相关资源
    最近更新 更多