バージョン 3.6 のコード修正では、次のような HTML 5 の有効なコードを受け入れることができないため、新しい CKEditor 4 を試します。
<a href="#"><p>something</p></a>
しかし、CKEditor の新しいバージョンでもこのコードは修復されますが、どこに問題があるのでしょうか? config で HTML 5 をデフォルトとして設定する必要がありますか?
config.js ファイルに、次の構成設定を追加します。
// Display all children elements allowed in a <a> element.
console.log(CKEDITOR.dtd[ 'a' ]);
// Simply redefine DTD like this:
CKEDITOR.dtd['a']['div'] = 1;
CKEDITOR.dtd['a']['p'] = 1;
CKEDITOR.dtd['a']['i'] = 1;
CKEDITOR.dtd['a']['span'] = 1;
// Check if <div> can be contained in a <p> element.
console.log( !!CKEDITOR.dtd[ 'a' ][ 'div' ] ); // default false
// Check if <a> can be contained in a <div> element.
console.log( !!CKEDITOR.dtd[ 'div' ][ 'a' ] ); // default true
Drupal 8 の場合、このコードを管理テーマ js に追加できます。最適なソリューションではありませんが、機能的です。
これを回避するには、xsl を使用して、元の要素をクラス名として使用して不明な要素を div または span-tag にマップし、この onsubmit を元に戻します。xml との間で常にこれを行っており、問題なく動作します。