目前似乎没有一种“好”的方式来做到这一点。即使是 Plone 文档目前也不知所措。 http://docs.plone.org/develop/plone/forms/wysiwyg.html#id9
问题在于 Products.TinyMCE 试图从 Field 的小部件属性中获取 WYSIWYG 配置。
https://github.com/plone/Products.TinyMCE/blob/1.3.6/Products/TinyMCE/utility.py#L711-L713
# Get widget attributes
widget = getattr(field, 'widget', None)
filter_buttons = getattr(widget, 'filter_buttons', None)
allow_buttons = getattr(widget, 'allow_buttons', None)
但是,据我了解,使用 Dexterity,我们将字段映射到表单对象上的小部件。
from plone.autoform import directives as form
from plone.app.z3cform.wysiwyg import WysiwygFieldWidget
class IExample(model.schema):
form.widget('body', WysiwygFieldWidget)
body = schema.Text(title=u"Body")
因此,我们的 body 字段不包含 Products.TinyMCE 可以从中提取配置的小部件属性。
无论如何,如果你现在需要它工作,我可以通过以下操作破解它:
在您的 ZMI 中,自定义 portal_skins/tinymce/tinymce_wysiwyg_support 以将行 field field|nothing 更改为 field field|view/field|nothing。
以模式驱动的方式定义您的内容类型,并为您的所见即所得字段执行以下操作:
class mywidg(object):
allow_buttons = ('bold',
'italic',
'justifyright',
'justifyleft',)
class IExample(model.schema):
form.widget('body', WysiwygFieldWidget)
body = schema.Text(title=u"Body")
body.widget = mywidg()