我正在Plone 5.0安装程序上,我想以某种方式对其进行修改,以便希望创建新页面的用户在TinyMCE编辑器中拥有默认文本。

我对Plone还是很陌生,对大量不同的语言以及它们如何相互联系感到不知所措。因此,我希望能提供一些有关如何正确而有效地开始解决该问题的建议,而不是快速而又肮脏地处理一些文件。

任何建议,如何处理都欢迎。

最佳答案

前端(在本例中为TinyMCE)不负责默认值,它是下面的形式。

Plone 5使用具有z3c形式的敏捷类型。



编辑:这是您按照传统的方式进行的方式-我的意思是plone指令方式-
抱歉误导您。我仍然使用plone.directives,它支持这种默认值适配器。

plone.app.contenttypes的默认内容类型Document使用plone.supermodel。这有一个不同的概念。

如果您仍然愿意创建自己的Richtext行为,则可以遵循以下说明:http://docs.plone.org/external/plone.app.dexterity/docs/advanced/defaults.html

在您的情况下:

def richtext_default_value(**kwargs):
    return RichTextValue('<p>Some text</p>')


@provider(IFormFieldProvider)
class IRichText(model.Schema):

    text = RichTextField(
        title=_(u'Text'),
        description=u"",
        required=False,
        defaultFactory=richtext_default_value,
    )
    model.primary('text')


您可以在文本字段中添加defaultFactory

如果您在鸡蛋上乱砍那些线,它将起作用。



以下是有关以编程方式设置默认值的一些信息:


https://pypi.python.org/pypi/plone.directives.form#id8
How do you override the default value of a field in a dexterity behavior in Plone?


因此,在您的情况下,这可能看起来像这样:

from plone.directives.form import default_value
from plone.app.contenttypes.behaviors.richtext import IRichText
from plone.app.textfield.value import RichTextValue

@default_value(field = IRichText['text'])
def richtext_default_value(data):
    return RichTextValue('<p>Some text</p>')


您可以通过context参数扩展default_value装饰器,使其更具体:@default_value(field = IRichText['text'], context=my.package.content.interfaces.IMyType)

但是,由于我们有行为的概念,因此最好使用默认值来实现自己的Richtext行为:


创建一个行为-> http://docs.plone.org/external/plone.app.dexterity/docs/behaviors/creating-and-registering-behaviors.html并使用plone默认的RTF行为作为您自己的模板-> https://github.com/plone/plone.app.contenttypes/blob/1.2.16/plone/app/contenttypes/behaviors/richtext.py
通过ZMI(portal_types-> Document)从内容类型(文档)中删除“ plone.app.contenttypes.behaviors.richtext.IRichText”行为
添加您自己的Richtext行为,可能类似于my.package.behaviors.richtext.IRichtextWithDefaultValue

10-04 22:12
查看更多