我正在使用灵巧创建一些自定义内容类型。我想"定制" RichText字段的方面只允许在此字段上使用TinyMce的基本按钮。
在Archetypes中,我可以使用
TextField('text',
allowable_content_types=('text/html',),
default_output_type='text/x-html-safe',
required=1,
widget=RichWidget
(label='Content',
allow_buttons=(
'bold',
'italic',
'justifyleft',
'justifyright',
),
),),
我如何使用基于Dexerity的内容类型进行此操作?
答案 0 :(得分:1)
似乎没有"很好"现在就这样做的方法。即使是Plone文档目前也处于亏损状态。 http://docs.plone.org/develop/plone/forms/wysiwyg.html#id9
问题在于Products.TinyMCE试图从Field的widget属性中获取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可以从中提取配置的widget属性。
无论如何,如果你现在需要它,我可以通过以下方式破解它:
在ZMI中,自定义portal_skins / tinymce / tinymce_wysiwyg_support,将行field field|nothing
更改为field field|view/field|nothing
。
以架构驱动的方式定义您的内容类型,并为您的WYSIWYG字段执行以下操作:
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()