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: タイトル