Добавление HTML-кнопки в редактор Draftail Кнопки действий в Wagtail
У меня проблема с добавлением пользовательской кнопки в Wagtail к кнопкам RichTextEditor, при нажатии на которую пользователь редактора сможет добавить ссылку с html button
.
Код, который я использовал для этого в TinyMCE, первоначально был представлен здесь: https://dev.to/codeanddeploy/tinymce-add-custom-button-example-399m
Но я не могу понять, как зарегистрировать хук в Wagtail, чтобы реализовать этот тип функциональности. Здесь есть похожий пример, но я не могу понять, как включить отображение фактической кнопки в стиле, который мы предопределили, как я сделал в редакторе TinyMCE.
Вот пример, который отлично работает для этого случая, но я надеюсь, что есть простой пример с идеей добавления кнопок, как я делал это в TinyMCE: https://erev0s.com/blog/wagtail-list-tips-and-tricks/#add-a-code-button-in-the-rich-text-editor
Вот код из этого сообщения:
from wagtail.core import hooks
@hooks.register("register_rich_text_features")
def register_code_styling(features):
"""Add the <code> to the richtext editor and page."""
# Step 1
feature_name = "code"
type_ = "CODE"
tag = "code"
# Step 2
control = {
"type": type_,
"label": "</>",
"description": "Code"
}
# Step 3
features.register_editor_plugin(
"draftail", feature_name, draftail_features.InlineStyleFeature(control)
)
# Step 4
db_conversion = {
"from_database_format": {tag: InlineStyleElementHandler(type_)},
"to_database_format": {"style_map": {type_: {"element": tag}}}
}
# Step 5
features.register_converter_rule("contentstate", feature_name, db_conversion)
# Step 6. This is optional
# This will register this feature with all richtext editors by default
features.default_features.append(feature_name)
Думаю, вам лучше создать блок для добавления кнопки призыва к действию. Когда мне нужно что-то подобное, я использую StructBlock с параметрами text, url и style https://docs.wagtail.org/en/latest/topics/streamfield.html#structblock