CKEditor3.01ja (1.1) | 2009-11-15 06:26 |
CKEditor for MODx Evolution (3.1.ja) | 2010-02-08 22:14 |
CKEditor for Movable Type (1.073) | 2011-05-25 09:06 |
MobilePictogram (0.1.1) | 2010-01-23 05:02 |
Rewrite (1.1.3) | 2009-11-16 11:50 |
文字装飾のボタンを押した際に、装飾として使われる要素を変更する方法を説明します。
これらのボタンが登録されているのは「basicstyles」というプラグインです。
そこで「_source/plugins/basicstyles/plugin.js」の下部を見てみると、 以下のような設定があるので、これを config.js などで変更すると要素を変更できることが分かります。
// Basic Inline Styles. CKEDITOR.config.coreStyles_bold = { element : 'strong', overrides : 'b' }; CKEDITOR.config.coreStyles_italic = { element : 'em', overrides : 'i' }; CKEDITOR.config.coreStyles_underline = { element : 'u' }; CKEDITOR.config.coreStyles_strike = { element : 'strike' }; CKEDITOR.config.coreStyles_subscript = { element : 'sub' }; CKEDITOR.config.coreStyles_superscript = { element : 'sup' };
前項の変更で設定を変更することはできるのですが、一つ落とし穴があって、 例えば「uではなくins」「strikeではなくdel」のような以下の設定をした場合、
CKEDITOR.config.coreStyles_underline = { element : 'ins' }; CKEDITOR.config.coreStyles_strike = { element : 'del' };
パラグラフ全(P要素)体を選択して「下線」ボタンを押したときに、装飾の結果が以下のようになってしまい、 正しいHTMLとなりません。
<ins><p>文章</p></ins>
CKEditorでは文字の修飾をするときに、 「CKEDITOR.dtd (_source/core/dtd.jsで定義)」を見ているのですが、 「ins」や「del」への装飾の際にこれがうまく働かないことが原因のようです。
この問題については本当は「dtd.js」を追わなくてはいけないとは思うのですが、、 簡単な解決方法としては、CKEDITOR.dtd の「u」や「strike」からコピーするというものがあります。
CKEDITOR.dtd.del = CKEDITOR.dtd.strike; CKEDITOR.dtd.ins = CKEDITOR.dtd.u; CKEDITOR.config.coreStyles_underline = { element : 'ins' }; CKEDITOR.config.coreStyles_strike = { element : 'del' };
こうすることで正しく「ins」や「del」で装飾されます。