BrowserDefaultMixin

ArcheTypesのプロダクトを作っていて、次のコードのように、BaseContentだけを継承したプロダクトを作ったら、デフォルトページが表示されません。オブジェクトが作成されていない訳ではありません。URLの後ろにviewとかeditとかつけたら、ちゃんと表示してくれます。

from Products.Archetypes.atapi import BaseContent 

class MyContentType(BaseContent):
    portal_type = meta_type = 'MyContentType'
    schema = BaseContent.schema.copy() + ...

 調べてみると、BrowserDefaultMixinを混ぜ込まないといけないようです。こいつを入れたら、出るようになりました。

from Products.Archetypes.atapi import BaseContent 
from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin

class MyContentType(BrowserDefaultMixin, BaseContent):
    portal_type = meta_type = 'MyContentType'
    schema = BaseContent.schema.copy() + ...


ATDocumentなどのATContentTypesで定義されているコンテンツ・タイプには、すでに入っているので、継承する時に指定する必要はありません。