ハマったこと
記事のコンテンツをCKEditorを使って管理しているのですが、以下のタグを保存したときに悲劇は起こりました...
<li>ほげほげ</li>
<li>ふがふが</li>
<li>なむなむ</li>
CKEditor君 :「<ul>
タグなかったから追加しといたわ~ 感謝してや」
わい :「いや、テンプレート側に<ul>
書いてあるんだけど余計なことしないで(# ゚Д゚)」
CKEditorの仕様で保存すると <ul>
タグが消えてしまうらしい。
原因
ドキュメントを見てみると CKEDITOR.dtd.$intermediate
なるものがありました。
List of elements that are not to exist standalone that must live under it's parent element.
これだ...
解決策
CKEditorの config.js
に以下の設定を追加し、CKEditorの <li>
に対する振る舞いを強制的に削除しました。
delete CKEDITOR.dtd.$listItem['li'];
delete CKEDITOR.dtd.$intermediate['li'];
delete CKEDITOR.dtd.$intermediate['li'];
これだけで、行けそうな気がしたんですがうまくいかなかったので $listItem
を削除することでうまくいきました。
備考
私はCKEditorをGCSの画像をいい感じに扱いたいために使っていて基本的にHTMLタグを直書きなので問題ないのですが、エディタを使っている人は多分この設定を入れるだけだと、リストを挿入するときに <dt>
や <dd>
になっちゃうだけだと思うので注意が必要です(多分)