4

基本的にMartin Aspeliの著書Professional Plone 4 Developmentに従って、サイトでPloneを繰り返し展開し、ビルドアウトを使用しようとしています。<site>.policyソース製品とを使用してシステムをセットアップし<site>.theme、テーマを自動的にアクティブ化できますが、ビルドアウトを実行するときは、サイトの標準オブジェクトを作成する前に、Plone サイトをインスタンス化し、ポリシー製品をアクティブ化する必要があります。

buildout はセットアップ中に Plone サイト オブジェクトや特定のフォルダなどのコンテンツ オブジェクトの存在をチェックし、それらが適切な設定で存在しない場合はそれらを作成できますか? <site>.content別の製品でそれを行うことはできますか、それとも で処理する必要があり<site>.policyますか?

4

1 に答える 1

6

原則として、ビルドアウトは、あなたがあなたのために何かをするためのレシピを作成する限り、あなたがコーディングできることなら何でもすることができます。

幸いなことに、誰かがあなたのために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.pyappsite

from Products.CMFPlone.utils import _createObjectByType

if 'someobject' not in site:
    _createObjectByType('SomeType', site, 'someobject', title='Foo Bar')
于 2013-02-23T14:11:40.747 に答える