MTに独自のエディタを追加する
Movable Typeの記事編集画面にある本文のエディタはプラグインで追加できるようになっています。リッチテキストフォーマットで使えるTinyMCEも本体組み込みではなくプラグインとして実装されています。
プラグインからエディタを追加するのはとても簡単です。config.taml
に以下を記述するだけです。
id: MyEditor
name: My Editor
version: 0.00
description: The my editor.
editors:
myeditor:
label: My Editor
template: editor.tmpl
text_filters:
my_format:
label: My format
code: ...
editors
の下にエディタの識別子を入れ、その中にエディタの名前とテンプレートのファイル名を指定します。エディタはフォーマットに結び付けられるので、必要であれば独自のフォーマットも定義しておきます。
エディタのテンプレートは入力欄の部分にはめ込まれるとかではなく、単に編集画面の先頭にインクルードされるだけです。大抵はJavaScriptを読み込むだけなので、以下のようにして独自のJSファイルを読み込む記述を追加します。
<mt:setvarblock name="js_include" append="1">
<script type="text/javascript" src="<mt:Var name="static_uri"/>plugins/MyEditor/my_editor.js"></script>
</mt:setvarblock>
ここからが本番です。エディタの実体はJavaScriptのMT.Editor
を拡張したオブジェクトです。エディタオブジェクトを定義するコードを先ほどのJSファイルに記述していきます。
まずはクラスメソッド的なものを定義していきます。
MT.Editor.MyEditor = function() { MT.Editor.apply(this, arguments) };
$.extend(MT.Editor.MyEditor, MT.Editor, {
isMobileOSWYSIWYGSupported: function() {
return false;
},
formats: function() {
return ['my_format'];
},
});
isMobileOSWYSIWYGSupported
メソッドはモバイルでもWYSIWYGをサポートするかどうかを返すものです。
formats
メソッドはこのエディタがサポートしているフォーマット郡を返すメソッドです。ここでは独自のmy_format
のみをサポートしていることにします。
続いてインスタンスメソッド的なものを定義します。
$.extend(MT.Editor.MyEditor.prototype, MT.Editor.prototype, {
initEditor: function(format) {
console.log('initEditor:', format);
this.$textarea = $('#' + this.id);
this.$editorArea = this.$textarea.parent();
this.$box = $('<div style="height:100px;border:dashed 2px #f00; text-align:center; font-size:30px">My Editor</div>').appendTo(this.$editorArea).hide();
this.setFormat(format, true);
},
setFormat: function(format, calledInInit) {
console.log('setFormat:', format, calledInInit);
this.$textarea.hide();
this.$box.show();
},
hide: function() {
console.log('hide');
this.$textarea.show();
this.$box.hide();
},
});
initEditor
メソッドはエディタの初期化時に呼ばれるメソッドです。ここではテキストエリアの代わりに表示する適当な要素を用意しています。
setFormat
メソッドは他のフォーマットから切り替えられた時に呼ばれるメソッドで、エディタの表示処理を行います。初回はinitEditor
メソッドしか呼ばれないので自分で呼び出します。
hide
メソッドは他のエディタに切り替えられた時に自分を隠すためのメソッドです。これを実装しないと他のエディタでも表示されっぱなしになってしまいます。
最後に以下のコードでMT.EditorManager
にエディタを登録します。
MT.EditorManager.register('component', MT.Editor.MyEditor);
これをMTに組み込むとこんな感じになります。
あとはエディタの機能をひたすら実装すればエディタが完成します。
Author And Source
この問題について(MTに独自のエディタを追加する), 我々は、より多くの情報をここで見つけました https://qiita.com/rryu/items/1a6171c576ec419e57c0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .