我正在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
。