Dự án tôi đang làm việc trên sử dụng plugin khéo léo tuyệt vời của Plone. Một vài loại nội dung tùy chỉnh của tôi có tên rất cụ thể phải được tính toán. Con đường tôi đã ban đầu thực hiện điều này trước khi là bằng cách thêm plone.app.content.interfaces.INameFromTitle như một hành vi trong mục cài đặt chung của đối tượng, mỗi chỉ dẫn của nhãn hiệu:Có cách nào để mở rộng hành vi INameFromTitle của Plone Dexterity không?
<?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>
Sau đó, tôi tạo ra một adapter sẽ cung cấp 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
phương pháp này là rất tương tự như đề xuất trong bài viết trên blog này:
http://davidjb.com/blog/2010/04/plone-and-dexterity-working-with-computed-fields
Thật không may, phương pháp này đã ngừng hoạt động sau phiên bản beta plone.app.dexterity và bây giờ các mục nội dung của tôi không được gán tên đúng cách.
Có ai muốn biết cách mở rộng hành vi INameFromTitle của Thủ Thuật đối với các trường hợp sử dụng tên rất cụ thể không?
Trợ giúp của bạn được đánh giá cao, cảm ơn!