1

Web サイトの 1 つで WYSIWYG エディター CKeditor を使用しています。より使いやすくするために、エディターを使用するたびに特定のテンプレートを自動的にロードしたいと考えています。顧客、Web サイトの残りの部分 (コンテンツが 2 つの列に表示されるように設計されています) とうまく統合するために、このテンプレートを適用する必要があるため、彼の作業を簡単にしたいと思います。

現在、CKeditor フォーラムで見つけた次のコードを使用しています。

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

テンプレート選択ページを開くことができ、ユーザーは編集前にテンプレートを直接選択できるため、これはほとんど良いことです (選択肢は 1 つしかありません)。

しかし、テンプレート選択ページでユーザーに選択を求めることなく、(唯一の) テンプレートを適用したいと思います。

それで、エディターでテンプレートを適用するための「execCommand」のような関数が存在するかどうか疑問に思っていますか? これは、テンプレート選択ページでテンプレートをクリックしたときに実行されるアクションだと思いますが、ドキュメントには見つかりません。

ご協力ありがとうございました。

4

4 に答える 4

2

私はまったく同じことを試しましたが、現在のバージョンの ckeditor ork のソリューションでは機能しないことを報告する必要があります。ckeditor にテンプレート プラグインを強制的に読み込む方法を考え出すのに何時間も費やした後 (テンプレート ダイアログを開いた後、ckeditor はテンプレート プラグインを完全に読み込みます)、あきらめて、他の解決策を試すことにしました。.setData メソッドを直接使用するというアイデアが得られた場合、解決策は非常に簡単です。

  1. div や script タグなど、html のどこかにテンプレートを定義し、jQuery を使用してテンプレートをコピーします。
  2. ckeditor テンプレートの機能は非常に限られているため、本格的なテンプレート エンジンである jsrender を確認する必要があります。

目的の html テンプレートができたら、それを .setData に渡すだけです。

于 2012-09-13T23:18:39.193 に答える
1

Zimaは正しいです。最初にテンプレートをロードする必要があります。そうしないと、getTemplatesが未定義を返すことになります

したがって、次のようなものが問題を解決します。

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 に答える