1

我在我的一个网站中使用 WYSIWYG 编辑器 CKeditor。为了更加用户友好,我想在每次使用编辑器时自动加载一个特定的模板。客户必须应用此模板才能与网站的其余部分(其设计为在两列中显示内容)进行良好的集成,所以我想简化他的任务。

现在,我正在使用在 CKeditor 论坛上找到的以下代码:

CKEDITOR.replace("newsContent", {
    customConfig : "/ckeditor/config/news.js",
    on:{ instanceReady : function( ev ) { 
           this.execCommand('templates');
       }
    },
});

这几乎是好的,因为它允许打开模板选择页面,因此用户可以在编辑之前直接选择模板(他只有一个选择)。

但我想应用(唯一)模板,而不要求用户在模板选择页面中选择它。

所以我想知道是否存在像“execCommand”这样的函数来在编辑器中应用模板?我认为这是我在模板选择页面中单击模板时执行的操作,但我在文档中找不到它。

感谢您的帮助。

4

4 回答 4

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);
       }
    },
});
于 2011-02-21T13:55:55.953 回答
2

我尝试了完全相同的事情,我必须报告当前版本的 ckeditor ork 的解决方案不起作用。在花了几个小时弄清楚如何强制 ckeditor 加载模板插件(在您打开模板对话框后,ckeditor 完全加载模板插件)之后,我放弃了并决定尝试其他解决方案。如果您想到直接使用 .setData 方法,则解决方案非常简单:

  1. 在 html 中的某处定义模板,例如在 div 或 script 标签中,并使用 jQuery 复制模板
  2. 由于 ckeditor 模板的功能非常有限,您应该选择 jsrender,它是一个成熟的模板引擎。

一旦您有了所需的 html 模板,只需将其传递给 .setData。

于 2012-09-13T23:18:39.193 回答
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);
                }
            }
        });
于 2015-03-07T11:34:47.217 回答
0

仅供参考,在获取模板之前需要加载模板

**CKEDITOR.loadTemplates(CKEDITOR.config.templates_files,'')**
insert = CKEDITOR.getTemplates('default');
editor.setData(insert.templates[11].html);

希望这可以帮助某人

于 2014-09-03T11:16:52.777 回答