Archetypes SchemaExtender
archetypes.schemaextender 能夠用來新增欄位、調整欄位順序、隱藏欄位,它向 Archetypes 的 BaseContent 和 BaseFolder 註冊了 ISchema apapter,從這兩個基本型別衍生的所有內容,就會受到它的控制。
Description Widget
預設的 Description 欄位採用 TextAreaWidget 部件,輸入的文字並不會有換行的效果,想要保留 HTML標籤效果的話,可以利用 archetypes.schemaextender 更換 TextAreaWidget 部件。
先建立一個 adapter 檔案,範例如下:
from my.product.browser.interfaces import IMyProductLayer from my.product.widgets import MyCustomWidget from Products.ATContentTypes.interface.interfaces import IATContentType from archetypes.schemaextender.interfaces import IBrowserLayerAwareExtender from archetypes.schemaextender.interfaces import ISchemaModifier class MyExtender(object): adapts(IATContentType) implements(IBrowserLayerAwareExtender, ISchemaModifier) layer = IMyProductLayer def fiddle(self, schema): schema['description'].widget=MyCustomWidget( label='...', .... )
再完成註冊動作,範例如下:
<adapter factory=".extender.MyExtender" provides="archetypes.schemaextender.interfaces.ISchemaModifier" />
Another Example
http://weblion.psu.edu/services/documentation/developing-for-plone/fsd-extender/hiding-fields
http://weblion.psu.edu/static/schemaextender-presentation/newsitemchannel.zip
疑問: schemaextender 可以用來改預設值嗎?