[유료 작업] Draft 플러그인에서 Revive Ad Server 태그의 SCRIPT 태그 렌더링 문제 도움

요약

공식 Discourse 광고 플러그인의 일부 코드를 기반으로 Revive 광고 서버 플러그인의 초안을 작성했습니다. 기본적으로 광고 네트워크를 제거하고 하우스 광고 코드를 리팩터링하여(README에 모두 문서화됨) Revive 광고 서버에서 태그를 서빙하도록 했습니다. 이 과정에서 데스크톱 또는 모바일 광고로 필터링하도록 처리했습니다(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와 Rails에 익숙하지 않은 초보자로서, 이는 Ember.js 문제인 것 같지만 그 이유를 이해하지 못하겠습니다.

기한은 언제까지인가요?

급하지 않습니다. 당분간 사용하지 않을 계획이며, 이는 "미래"를 위해 구축 중인 프로젝트입니다.

이 작업을 위해 제시할 수 있는 예산(USD)은 얼마인가요?

이 Ember.js 렌더링 벽을 넘을 수 있도록 도와줄 합리적인 모든 제안에 감사하며 환영합니다.

참고 사항:

관심 있는 분들을 위해 말씀드리자면, 저는 DFP를 사용하지 않습니다. 단순히 좋아하지 않기 때문입니다. Revive는 우리에게 잘 작동합니다(자체 호스팅) 하지만, 이 솔루션이 작동하게 되면 DFP 및 기타 광고 서버 태그와도 잘 작동할 것으로 생각됩니다. 따라서 소스 코드는 유사한 요구 사항을 가진 모든 사람이 자유롭게 사용할 수 있도록 공개될 것입니다.

테스트 사이트 (테스트용 임시):

Test site removed.

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>

감사합니다!

P.S. Ember 문서에 따르면 handlebars는 <script> 태그를 지원하지 않는 것 같아 Embers.js 솔루션을 찾을 수 없었습니다. 추후 Ember.js에서 이 작업을 수행하는 방법을 찾아볼지 모릅니다…

8개의 좋아요