受け入れられた解決策は少しあいまいかもしれないので、ここにいくつかの説明があります:
1)グローバルジェネリック設定を編集しないでください。
あなたが非常に奇妙なことをしているのでない限り、あなたはあなたのサイトを一連のplone拡張機能としてセットアップし、次のようなフォルダー構造を持っているでしょう:
app.plugin/
app.plugin/app/
app.plugin/app/configure.zcml
app.plugin/app/profiles/
app.plugin/app/profiles/default
app.plugin/app/profiles/default/types
app.plugin/app/profiles/default/types/Folder.xml
app.plugin/app/profiles/default/types/app.mydexteritytype.xml
app.plugin/app/profiles/default/types.xml
app.plugin/app/profiles/default/portlets.xml
app.plugin/app/profiles/default/catalog.xml <---- ADD THIS
2)catalog.xmlにxmlブロック(受け入れられているソリューションによる)を含める必要はありません。フロントエンドZMIからインデックスを作成するだけです。ただし、これを行うと、次にプラグインをインストールしたときに吹き飛ばされてしまいます。だからあなたはおそらくしたいでしょう。
3)catalog.xmlをインストールした後、portal_catalogへのZMIインターフェースを参照し、「インデックス」タブの下にインデックスが存在することを確認します。そうでなければ、あなたはめちゃくちゃになっています。
4)インデックスを作成するには、[詳細]タブに移動し、[再構築]を選択する必要があります。
5)インデクサーは貪欲に例外を消費し、例外を発生させません(AttributeErrorの場合は特に重要です。インデックスを作成する値のインデックスを作成できない場合があります)。したがって、インデクサーが実際に実行されていることを確認する場合は、ログを追加するか、印刷してみてください。その中のステートメント:
@indexer(IMyDexterityType)
def dummy_indexer(obj, **kw):
try:
print('indexed: %r' % obj)
return obj.title
except Exception as e:
print('index fail: %r' % e)
return ''
他に何もない場合は、次のような出力が表示されます。
2013-08-12 16:42:28 INFO GenericSetup.archetypetool Archetype tool imported.
2013-08-12 16:42:28 INFO GenericSetup.resourceregistry Stylesheet registry imported.
2013-08-12 16:42:28 INFO GenericSetup.resourceregistry Javascript registry imported.
indexed: <MyDexterityType at /Plone/test/cat-document-0>
indexed: <MyDexterityType at /Plone/test/hello>
6)いくつかのドキュメント( http://developer.plone.org/reference_manuals/external/plone.app.dexterity/advanced/catalog-indexing-strategies.html?highlight=custom%20indexing)に記載されているgrok.global_adapter()#creating-custom-indexers)は、仮想プロパティの登録に関するものであり、catalog.xmlを設定する必要性を軽減するものではありません。
最後に、誰かがここのgithubに実用的な例を載せました。これは非常に便利です。
https://github.com/aclark4life/event_days_indexer