首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Dexterity RichWidget自定义TinyMCE

为Dexterity RichWidget自定义TinyMCE
EN

Stack Overflow用户
提问于 2014-11-25 01:13:49
回答 1查看 177关注 0票数 4

我正在使用dexterity创建一些自定义内容类型。我想“自定义”在这个领域只允许TinyMce的基本按钮的RichText字段方面。

在原型中,我可以使用

代码语言:javascript
复制
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',
    ),
),),

我该如何使用基于灵巧的内容类型来做到这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2014-11-27 06:51:22

现在似乎没有一个“好”的方法来做到这一点。即使是Plone文档目前也处于亏损状态。http://docs.plone.org/develop/plone/forms/wysiwyg.html#id9

问题出在Products.TinyMCE试图从字段的窗口小部件属性中获取所见即所得配置。

https://github.com/plone/Products.TinyMCE/blob/1.3.6/Products/TinyMCE/utility.py#L711-L713

代码语言:javascript
复制
# Get widget attributes
widget = getattr(field, 'widget', None)
filter_buttons = getattr(widget, 'filter_buttons', None)
allow_buttons = getattr(widget, 'allow_buttons', None)

但是,据我所知,我们可以灵活地将字段映射到表单对象上的小部件。

代码语言:javascript
复制
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

以模式驱动的方式定义您的内容类型,对于您的WYSIWYG字段执行以下操作:

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27110341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档