进阶主题 \ 制作一个插件这里是一个制作插件的简易教程并提供示例
此页更新时间:2019-05-04 21:52
此页英文文档:https://www.tiny.cloud/docs/advanced/creating-a-plugin/
为TinyMCE制作插件,可以使用Yeoman generator,也可以参考如下入门教程。在了解如何制作插件后,建议继续参阅API文档,并查看TinyMCE目前自带的现有插件,以了解更多插件制作的细节。
文件结构
首先在TinyMCE/plugins文件夹中创建一个与插件同名的文件夹。该文件夹内的插件js文件命名方式有两种。一种为plugin.js,当开发人员使用未压缩的tinymce.js时,会使用该文件。同样,在使用tinymce.min.js时,会加载加载plugin.min.js。所以如果你不确定会使用tinymce.js还是tinymce.min.js,干脆两个都留着,一个叫plugin.js,一个叫plugin.min.js。
插件的文件结构示例:
/tinymce/plugins/example/plugin.js
/tinymce/plugins/example/plugin.min.js
使用插件的方法与自带插件是一样的:
tinymce.init({
selector: 'textarea',
plugins: 'example',
});
一个插件示例
这个插件示例演示了如何添加一个简单的工具栏按钮和菜单项。此按钮打开一个对话框,允许在编辑器中输入标题。菜单项将打开与按钮相同的对话框。
tinymce.PluginManager.add('example', function(editor, url) {
var openDialog = function () {
return editor.windowManager.open({
title: '这里是弹窗标题',
body: {
type: 'panel',
items: [
{
type: 'input',
name: 'title',
label: 'Title'
}
]
},
buttons: [
{
type: 'cancel',
text: 'Close'
},
{
type: 'submit',
text: 'Save',
primary: true
}
],
onSubmit: function (api) {
var data = api.getData();
// 将输入框内容插入到内容区光标位置
editor.insertContent('插入的文字是: ' + data.title);
api.close();
}
});
};
// 注册一个工具栏按钮名称
editor.ui.registry.addButton('example', {
text: '工具栏按钮名',
onAction: function () {
openDialog();
}
});
// 注册一个菜单项名称 menu/menubar
editor.ui.registry.addMenuItem('example', {
text: 'Example菜单名',
onAction: function() {
openDialog();
}
});
return {
getMetadata: function () {
return {
//插件名和链接会显示在“帮助”→“插件”→“已安装的插件”中
name: "Example plugin",//插件名称
url: "http://exampleplugindocsurl.com", //作者网址
};
}
};
});
有关插件的本地化问题
在插件中或多或少会涉及到自定义的词语,如果想要让插件获得多语言支持,需要自定义语言。
在插件文件夹里,再新建一个langs文件夹,里面存放自定义的多语言文件。还以example插件为例,自定义的语言为“zh_CN”,则语言包文件路径应是:tinymce/plugins/example/langs/zh_CN.js
该js文件内容的结构类似.po文件,左侧是英文字符串,右侧是对应的翻译。
一个例子:
tinymce.addI18n('zh_CN', {
'Example plugin': 'Example插件'
});
如果插件包内不包含编辑器language参数指定的语言,会报404错误,在制作插件时可将如下声明添加到顶部以避免报错。
tinymce.PluginManager.requireLangPack('example', 'zh_CN,es_ES');