我在我的一个网站上使用WYSIWYG编辑器CKeditor。为了更加用户友好,我想在每次使用编辑器时自动加载特定模板。客户必须应用此模板,以便与网站的其余部分(设计内容显示在两列中)进行良好集成,因此我希望轻松完成任务。
现在,我正在使用我在CKeditor论坛上找到的以下代码:
CKEDITOR.replace("newsContent", {
customConfig : "/ckeditor/config/news.js",
on:{ instanceReady : function( ev ) {
this.execCommand('templates');
}
},
});
这几乎是好的,因为它允许打开模板选择页面,因此用户可以在编辑之前直接选择模板(他只有一个选择)。
但我想应用(仅)模板而不要求用户在模板选择页面中选择它。
所以我想知道是否存在像“execCommand”这样的函数来在编辑器中应用模板?我认为这是我在模板选择页面中点击模板时执行的操作,但我在文档中找不到它。
感谢您的帮助。
答案 0 :(得分:2)
这个适合我。
CKEDITOR.replace("newsContent", {
customConfig : "/ckeditor/config/news.js",
on:{ instanceReady : function( ev ) {
insert = CKEDITOR.getTemplates('your_required_template_name');
this.setData(insert.templates[0].html);
}
},
});
答案 1 :(得分:2)
我尝试了完全相同的事情,我必须报告使用当前版本的ckeditor ork的解决方案不起作用。花了几个小时花时间搞清楚如何强制ckeditor加载模板插件(ckeditor在打开模板对话框后完全加载模板插件)我放弃了并决定尝试其他解决方案。如果您想直接使用.setData方法,那么解决方案非常简单:
只要您拥有所需的html模板,只需将其传递给.setData。
答案 2 :(得分:1)
Zima是对的,你必须首先加载模板,否则你最终会得到getTemplates返回undefined
这样的事情可以解决问题:
CKEDITOR.loadTemplates(CKEDITOR.config.templates_files, '');
var ck = CKEDITOR.replace(elm[0], {
on: {
instanceReady: function (ev) {
var insert = CKEDITOR.getTemplates('default');
this.setData(insert.templates[0].html);
}
}
});
答案 3 :(得分:0)
FYI需要在获取模板之前加载模板
**CKEDITOR.loadTemplates(CKEDITOR.config.templates_files,'')**
insert = CKEDITOR.getTemplates('default');
editor.setData(insert.templates[11].html);
希望这有助于某人