[有料依頼] Draft プラグインにおける Revive Ad Server タグの SCRIPT タグレンダリングのサポート

概要

公式の Discourse 広告プラグインの一部のコードを基に、Revive Adserver プラグインのドラフト版を作成しました。基本的には、広告ネットワークを削除し、README にすべて記載されているハウス広告のコードをリファクタリングして、Revive Adserver からタグを提供するように変更しました。デスクトップ用またはモバイル用の広告でフィルタリングします(Revive はまだレスポンシブタグをサポートしていません)。以下が現在のリデザインです。

https://github.com/unixneo/neo-revive-discourse

現状:

  • <script> タグ(同期および非同期)のレンダリングに問題がありますが、<iframe> タグでは正常に動作します

今後の課題:

  • <script> タグおよび <iframe> タグのレンダリング問題の修正

例:

この iframe タグは正常に動作します:

<!-- Revive Adserver iFrame Tag - Generated with Revive Adserver v4.2.0 -->
<iframe id='a41d6e46' name='a41d6e46' src='http://srv.adserver.com/www/delivery/afr.php?zoneid=63&amp;cb=INSERT_RANDOM_NUMBER_HERE' frameborder='0' scrolling='no' width='728' height='90'><a href='http://srv.adserver.com/www/delivery/ck.php?n=aa785d4b&amp;cb=INSERT_RANDOM_NUMBER_HERE' target='_blank'><img src='http://srv.adserver.com/www/delivery/avw.php?zoneid=63&amp;cb=INSERT_RANDOM_NUMBER_HERE&amp;n=aa785d4b' border='0' alt='' /></a></iframe>

この非同期 JS タグはレンダリングされません(これが通常使用するタグ形式です):

<!-- Revive Adserver Asynchronous JS Tag - Generated with Revive Adserver v4.2.0 -->
<ins data-revive-zoneid="63" data-revive-id="2d220f1e3f63403189face1b493bcc4b"></ins>
<script async src="//srv.adserver.com/www/delivery/asyncjs.php"></script>

同様に、この JS タグもレンダリングされません:

<!-- Revive Adserver Javascript Tag - Generated with Revive Adserver v4.2.0 -->
<script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://srv.adserver.com/www/delivery/ajs.php':'http://srv.adserver.com/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=63");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'>\</scr"+"ipt>");
//]]>--></script><noscript><a href='http://srv.adserver.com/www/delivery/ck.php?n=aef496cd&amp;cb=INSERT_RANDOM_NUMBER_HERE' target='_blank'><img src='http://srv.adserver.com/www/delivery/avw.php?zoneid=63&amp;cb=INSERT_RANDOM_NUMBER_HERE&amp;n=aef496cd' border='0' alt='' /></a></noscript>

修正の試み:

htmlSafe() やトリプルハンドルバースを試しましたが、成功しませんでした。なぜ iframe タグのみがレンダリングされ、JS タグがレンダリングされないのか全くわかりません!Ember.js の問題のようですが、Ember.js と Rails の初心者である私には理解できません。

完了までの期限は?

急ぎません。すぐには使用しない予定です。これは「将来」のために私が構築しているものです。

このタスクに対して提示できる予算(米ドル)は?

この Ember.js のレンダリングの壁を乗り越えるための、妥当な金額のご提案を歓迎し、感謝いたします。

補足:

ご興味のある方のために、私は DFP は使用していません。単に好きではないからです。Revive は(自己ホスト型として)私たちにとって問題なく動作しますが、このソリューションが完成すれば、DFP や他の広告サーバータグとも問題なく動作するはずです。そのため、ソースコードは同様の要件を持つすべての人に無料で公開されます。

テストサイト(テスト用一時的なサイト):

テストサイトは削除されました。

「いいね!」 1

この GIG は完了しました。

外部スクリプトを JS を使用してテーマのヘッダーに直接追加することで、成功しました。方法は以下の通りです。

<script>
    var js_script = document.createElement('script');
    js_script.type = "text/javascript";
    js_script.src = "https://srv.adserver.com/www/delivery/asyncjs.php";
    js_script.async = true;
    document.getElementsByTagName('head')[0].appendChild(js_script);
</script>

その後、プラグインコード内で Revive Adserver タグの一部のみを呼び出し、広告ゾーンを指定します。方法は以下の通りです。

<div style='text-align: center;'>
<ins style='display:inline-block;' data-revive-zoneid="63" data-revive-id="2d220f1e3f63403189face1b493bcc4b"></ins>
</div>

ありがとうございます!

PS: Ember のドキュメントによると、Handlebars は <script> タグを受け付けないようなので、Ember.js の解決策は見つかりませんでした。将来的に Ember.js でこれを行う方法を探すかもしれません…

「いいね!」 8