在Episerver 9中自定义TinyMCE编辑器

3

我正在使用Episerver 9。我有一个需求,用户可以将包含HTML标记的内容复制到TinyMCE编辑器中。

我只想要粘贴文本内容。默认情况下,应该自动过滤掉HTML标签。

是否有办法在TinyMCE中实现此功能?

2个回答

2

您可以使用TinyMCEPluginNonVisual属性在Episerver中注册自定义的TinyMCE插件。通过将AlwaysEnabled设置为false,您可以使用属性设置来确定该插件是否应该对特定的编辑器/XHTML属性启用或禁用。

[TinyMCEPluginNonVisual(AlwaysEnabled = false, PlugInName = "customplugin")]
public class MyCustomPlugin
{

}

您的实际 TinyMCE 插件(即 JavaScript 代码)可能如下所示:

(function (tinymce, $) {

    tinymce.create('tinymce.plugins.customplugin', {

        init: function (editor, url) {

            editor.onPaste.add(function (editor, event) {

                if (!event.clipboardData || !event.clipboardData.items) {
                    return;
                }

                // TODO Modify event.clipboardData, for example to strip out HTML tags

            });
        }
    });

    // Register plugin
    tinymce.PluginManager.add('customplugin', tinymce.plugins.customplugin);

}(tinymce, epiJQuery));

虽然这不是一个完整的例子,但它应该可以帮助您朝正确的方向开始。

您还应该查看官方文档

编辑:如果您只想修改paste_as_text设置,您可以注册一个插件,并通过TinyMCEPluginNonVisual属性设置配置:

[TinyMCEPluginNonVisual(EditorInitConfigurationOptions = "{ paste_as_text: true }")]
public class PasteAsTextPlugin
{

}

1
假设你正在加载paste插件,你可以使用以下方法强制TinyMCE始终将粘贴的内容作为纯文本处理:
tinymce.init({
    ...
    plugins: "paste",
    paste_as_text: true
    ...
});

https://www.tinymce.com/docs/plugins/paste/#paste_as_text

我认为Episerver会提供一些方法来操作TinyMCE的配置。在该配置中添加"paste_as_text"选项即可满足您的需求。

感谢您的反馈。我的属性是 public virtual XhtmlString MainBody { get; set; } 因此,Episerver会为此加载默认的Xhtml编辑器...我可能需要覆盖编辑器,但不确定如何继续。 - user1641519
也许 Episerver 文档中有你需要的答案?http://world.episerver.com/documentation/Items/Developers-Guide/Episerver-CMS/9/Editing/Customizing-the-TinyMCE-editor/ - Michael Fromin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接