我试图在Wagtail的新编辑器中添加上标。
我在这里看到了文档:http://docs.wagtail.io/en/v2.0/advanced_topics/customisation/extending_draftail.html
我应该在哪里添加示例代码?
如果我能够将示例从feature_name = 'strikethrough'
和type_ = 'STRIKETHROUGH'
更改为superscript
并且它会起作用,我是否正确?
注册后,我是否必须修改我必须在features
设置中包含它的每个RichTextField,或者有没有办法将其添加到我的应用程序中的所有RTF?
答案 0 :(得分:4)
我相信我已经想出如何做到这一点,希望如果有更好的方法,有人会纠正我!
INSTALLED_APPS
个应用目录中创建一个名为wagtail_hooks.py
的文件。将以下代码放入文件中:
import wagtail.admin.rich_text.editors.draftail.features as draftail_features
from wagtail.admin.rich_text.converters.html_to_contentstate import InlineStyleElementHandler
from wagtail.core import hooks
@hooks.register('register_rich_text_features')
def register_strikethrough_feature(features):
feature_name = 'superscript'
type_ = 'SUPERSCRIPT'
tag = 'sup'
control = {
'type': type_,
'label': '^',
'description': 'Superscript',
}
features.register_editor_plugin(
'draftail', feature_name, draftail_features.InlineStyleFeature(control)
)
db_conversion = {
'from_database_format': {tag: InlineStyleElementHandler(type_)},
'to_database_format': {'style_map': {type_: tag}},
}
features.default_features.append(feature_name)
features.register_converter_rule('contentstate', feature_name, db_conversion)
行features.default_features.append(feature_name)
是回答我问题的最后一部分的内容 - 而且文档中缺少(嗯,它在那里,但在此上下文中没有)。这会将功能添加到所有RichTextField,而无需将features=[]
设置添加到每个现有和/或新RTF。
要修改此项以使用其他内置Draftail功能,请修改feature_name
,type_
,tag
,label
和description
字段。 Draftail支持以下类型:
bold
,italic
,h2
,h3
,h4
,ul
,ol
,{{1} }和hr
已经在RichTextField的Wagtail默认集中。
答案 1 :(得分:1)
从Wa v2.5开始,superscript
是一种内置格式,默认情况下禁用。要使用它,只需启用它即可。在模型定义中,每个字段均可:
# [...]
body = RichTextField(features=['strikethrough'])
# [...]
或针对网站上的所有编辑者:
from wagtail.core import hooks
@hooks.register('register_rich_text_features')
def enable_superscript_feature(features):
features.default_features.append('superscript')