私が取り組んでいるプロジェクトでは、Plone の素晴らしい Dexterity プラグインを使用しています。いくつかのカスタム コンテンツ タイプには、計算する必要がある非常に具体的な名前があります。私が以前にこれを達成した方法は、マニュアルの指示に従って、オブジェクトの一般的なセットアップ エントリの動作としてplone.app.content.interfaces.INameFromTitleを追加することでした。
<?xml version="1.0"?>
<object name="avrc.aeh.cycle" meta_type="Dexterity FTI">
...
<property name="schema">myproject.mytype.IMyType</property>
<property name="klass">plone.dexterity.content.Item</property>
...
<property name="behaviors">
<element value="plone.app.content.interfaces.INameFromTitle" />
</property>
...
</object>
次に、INameFromTitle を提供するアダプターを作成しました。
from five import grok
from zope.interface import Interface
import zope.schema
from plone.app.content.interfaces import INameFromTitle
class IMyType(Interface):
foo = zope.schema.TextLine(
title=u'Foo'
)
class NameForMyType(grok.Adapter):
grok.context(IMyType)
grok.provides(INameFromTitle)
@property
def title(self):
return u'Custom Title %s' % self.context.foo
この方法は、このブログ投稿で提案されている方法と非常によく似ています。
http://davidjb.com/blog/2010/04/plone-and-dexterity-working-with-computed-fields
残念ながら、この方法は plone.app.dexterity ベータ版以降は機能しなくなり、コンテンツ アイテムに適切な名前が割り当てられなくなりました。
Dexterity の INameFromTitle 動作を非常に具体的なネーミングのユースケースに拡張する方法を知っている人はいますか?
あなたの助けは大歓迎です、ありがとう!