2017-10-04 25 views
0

お客様には、Drupalからコンテンツ参照を選択できるプラグインを開発しなければなりませんでした。この参照はWYSIWYGフィールドにトークンとして挿入されます。CKEDITORはHTMLテーブルのカスタムタグを予期せず削除します

リッチテキストコンテンツで明確に識別できるように、トークンを強調表示されたボックスとして表示する「<customtag token="...">label</customtag>」というカスタムタグを実装しました。

CKEditor 4.4.8を使用します。

「P」タグに直接使用すると、カスタムタグが正しく表示されます。

<p><customtag token="...">label</customtag></p> 

しかし、私たちはHTMLのテーブルに挿入したときに、それはCKEditorバージョンによって取り除かれます。

我々はそれを取得する:私が代わりにeditor.filter.allow('customtag[!*]', 'customtag', true);CKEDITOR.config.extraAllowedContent = 'customtag[*]';を試してみましたが、一緒にプレイする

CKEDITOR.dtd['customtag'] = CKEDITOR.dtd; 
CKEDITOR.dtd.$blockLimit['customtag'] = true; 
CKEDITOR.dtd.$inline['customtag'] = true; 
CKEDITOR.dtd.$nonEditable['customtag'] = true; 
if (parseFloat(CKEDITOR.version) >= 4.1) { 
    // Register allowed tag for advanced filtering. 
    editor.filter.allow('customtag[!*]', 'customtag', true); 
    CKEDITOR.dtd.$object['customtag'] = true; 
} 

:以下のように私たちはcustomtagを宣言

<table> 
    <tr> 
    <td><customtag token="...">label</customtag></td> 
    </tr>  
</table> 

<table> 
    <tr> 
    <td>label</td> 
    </tr>  
</table> 

代わりのをルールは許しても成功することはありません。

カスタムタグが欠けているものは、表でも受け入れられますか?

答えて

0

最後に、何が欠けているかを考え出しました。

DTD定義では、カスタムタグを含めることができるHTMLタグを定義しませんでした。

カスタムタグが "inline"と宣言されていると、CKEDITOR自身が "p"や "div"のようなブロックHTMLタグのほとんどを設定しますが、 "td"や "li" 。

私は次のように私のコードでそれをしなければならなかった:

CKEDITOR.dtd [ 'TD'] [ 'customtag'] = 1; CKEDITOR.dtd ['li'] ['customtag'] = 1;

その後、myタグが正しく考慮されています。終わり

は、私のコードは次のようになります。あなたはお気づきのように

CKEDITOR.dtd['customtag'] = CKEDITOR.dtd; 
    CKEDITOR.dtd.$blockLimit['customtag'] = 1; 
    CKEDITOR.dtd.$inline['customtag'] = 1; 
    CKEDITOR.dtd.$nonEditable['customtag'] = 1; 

    CKEDITOR.dtd['td']['customtag'] = 1; 
    CKEDITOR.dtd['li']['customtag'] = 1; 

    if (parseFloat(CKEDITOR.version) >= 4.1) { 
     // Register allowed tag for advanced filtering. 
     editor.filter.allow('customtag[!*]', 'customtag', true); 
     CKEDITOR.dtd.$object['customtag'] = 1; 
    } 

、私はまた、整数のものでブール値を変更しました。私はちょうどCKEditorが他のHTMLタグのために何をするかについて自分のコードを通して行われた設定を調整するためにそれをしました。

関連する問題