メカニズムを知る
PloneにはPortalTransformsというツールがあります。PortalTransformsを使うと,reStructuredTextをHTMLやPlain Textにしたり,PDFをHTML化したりできます。MIME Type間のデータ変換は,このツールを使って行うのが礼儀です。
Plone 2.1からは,標準のコンテンツタイプがATContentTypes(以下ATCT)というものに置き換わっています。ATCTでは,ページ(ドキュメント)などの本文に記述できる「フォーマット」は,コンフィギュレーションファイルで設定できるようになっています。PortalTransformsを使ってtext/htmlに変換できるフォーマットを指定します。
ATContentTypes/etc/atcontenttypes.conf.inにサンプルがありますので,適宜編集した上でZopeインスタンスディレクトリのetc以下に設置するとよいでしょう。フォーマットの種類だけでなく,デフォルトのフォーマットもここでカスタマイズできるようですね。
Transformerを作る
PortalTransforms/transforms/以下に,変換を行うためのクラス定義があります。python.pyなどを参考に,適宜独自のTransformerを作りましょう。
MIME Type/Transformerを登録する
ZMIを使います。まず,作成したTransformerのMIME TypeをMIMETypesRegistryというツールに登録します。MIMETypesRegistryは,mimetypes_registoryというIDでPloneインスタンス直下にあります。
次に,PortalTransformsにTransformerを追加します。同じくZMIで,Ploneインスタンス直下にあるportal_transformsのコンテンツ(contents)タブで,Transformを追加(Add)します。このとき,作成したTransformerのIDやパスを入力します。
ここまで終わったら,atcontenttypes.conf.inから作った設定ファイルのATDocumentのセクションに,Transformerを追加します。あとはZopeを再起動すればOK。ページ(ドキュメント)の編集タブで,フォーマットのプルダウンメニューに,追加したフォーマットが見えていれば追加成功です。
Wikiマークアップ用のフォーマットを追加したかったんでちょっと調べてみました。30分でできるシリーズ。COREBlog2もconfigファイルでフォーマットをカスタマイズできるようにしたいなあ。でもZCML書くの面倒だなあ。