web-dev-qa-db-ja.com

CKEditor 4がGoogle AdSense非同期タグを削除しないようにするにはどうすればよいですか?

なんらかの理由で、CKEditor 4はGoogle AdSense非同期タグをフルHTMLテキスト形式から削除しています。

これで始まるもの(IDの代わりにプレースホルダー):

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
</script>
<!-- Top Banner -->
<ins class="adsbygoogle"
    style="display:inline-block;width:728px;height:90px"
    data-ad-client="ca-pub-XXXXX"
    data-ad-slot="XXXXX"></ins>
<script>
    (adsbygoogle = window.adsbygoogle || []).Push({});
</script>

このようになります:

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
</script>
<!-- Top Banner -->
<script>
    (adsbygoogle = window.adsbygoogle || []).Push({});
</script>

繰り返しますが、これはフルHTMLテキスト形式であり、insタグを属性なしで取得できますが、属性なしでは取得できません。タグは、保存のために属性を取得するのに問題はありません。

価値があるのは、CKEditorプロファイルに次のセットがあることです。

config.allowedContent = true;

[〜#〜]更新[〜#〜]

CKEditorがinsタグ(および属性)を削除するのは、AdSenseから提供された空のタグの場合のみです。改行しないスペースを追加しても、CKEditorはinsタグと属性を保持します。

テンケンの提案に従って、次の行を構成に追加しましたが、役に立ちませんでした。

config.protectedSource.Push( /<ins class=\"adsbygoogle\" style=\".*\" data-ad-client=\".*\" data-ad-slot=\".*\"\><\/ins\>/g );
2
DeepFriedBits

(私ではなく)このブログ記事を読んでください Drupal WYSYWG Module Custom CkEditor Configuration by Philip Norton。

きみの <script>タグは取り除かれていませんが、ファンキー<ins>タグです。そのブログ投稿から、protectedSourceをAFCルールに追加して、これらの要素が削除されないようにする必要があります。これはテストされていませんが、ブログポストから派生しています:

// Allow Google Adsense <ins> tags, I'm being more specific
// than allowing any raw <ins> tag here. This may be too specific, but
// play with it.
config.protectedSource.Push( /<ins class=\"adsbygoogle\"\>.*?<\/ins\>/g );

この設定を機能させるには、 [〜#〜] wysiwyg [〜#〜] モジュールをインストールする必要があります(または、独自のckeditor JavaScriptプロファイルに直接追加する)。

2
tenken

これは以下からです: http://margotskapacs.com/2014/08/taking-ckeditor-a-apart/

空の場合に削除されるタグの定義済みリストがあります(dtd.jsおよび$ removeEmptyを参照)。特定の空のタグが削除されないようにするには、属性「data-cke-survive」を追加します。

または、以下をCKEditor構成ファイルに渡します。

CKEDITOR.dtd。$ removeEmpty ['span'] = 0; CKEDITOR.dtd。$ removeEmpty ['TAG-NAME'] = 0;

これにより、空のタグが削除されないようになります。注:プロダクションCKEditor.jsを使用している場合は、「CKEDITOR.dtd」で始まるセクションを次のように変更する必要があります。

CKEDITOR.dtd = function(){var a = CKEDITOR.tools.extend、e = function(a、d){for(var [...] span:0 // set TAG:0 .. 「CKEDITOR.dtd」で始まるセクションのCKEditor.jsファイルをgrepし、空の場合は削除しないタグごとに値を1から0に変更します(上記の「span」タグの例を参照)

0
Andrew Kermes