GenericSetup を使って、コンテンツを作成する
GenericSetup を使うと、プロダクトのインストール時に、コンテンツを作ることができます。
作り方は単純で、作成するコンテンツにマーカ・インタフェースを追加して、所要の設定ファイルを用意するだけです。
この処理をやってくれるコードは、Procuts/CMFCore/ecportimport/content.py にあります。
1.structureフォルダを用意する。
まず、設定ファイルを格納する、structureフォルダを作ります。
structureフォルダは、プロダクトの拡張プロファイル(ふつうはMyProducts/profiles/default)の下に配置します。
その他の設定ファイルは、すべてここに格納されます。
2..objectsファイルで、作成するオブジェクトを指定する。
作成するオブジェクトを指定するには、structureフォルダに、objectsファイルを用意します。
.objectsファイルの書き方は、次のとおりです。作成するオブジェクトごとに、IDとportal_typeを並べた行を作ります。
name1,MyPortalType name2,MyPortalType name3,MyPortalType name4,MyPortalType name5,MyPortalType
3..preserverファイルで、削除しないオブジェクトを指定する。
.objectsで指定したオブジェクトは、デフォルトでは一旦削除されます。
削除したくない場合には、.preserveファイルにそのidをリストアップします。
name2 name4
4..deleteファイルで、削除するオブジェクトを指定する。
.objectsとは別に削除したいオブジェクトがある場合には、.deleteファイルに指定します。
こちらは使ったことがありませんが、.preserveファイルと同じ書き方のようです。
5.作成するオブジェクトの内容を指定する。
.objectsファイルで指定したオブジェクトの内容は、オブジェクトのIDと同じファイルに格納します。ファイルの記述形式は、コンテンツが実装しているインタフェースによって異なります。
コンテンツのエクスポート/インポートのために、次のインタフェースが用意されています。
(実際に処理を行うアダプタは、Products.GenericSetup.contentモジュールにあります。)
- Products.GenericSetup.interfaces.ICSVAware
- 名前のとおり、CSV形式を取扱います。
- Products.GenericSetup.interfaces.IINIAware
- 名前のとおり、iniファイル形式を取扱います。
- Products.GenericSetup.interfaces.IDAVAware
- RFC822形式を扱います。
IDAVAwareの場合は、次のような格好になります。
id: my_id title: タイトル