[TRABALHO REMUNERADO] Ajuda com a renderização de tags SCRIPT do Revive Ad Server para o plugin Draft

Resumo

Criei um rascunho de um plugin de servidor de anúncios Revive, baseado em um subconjunto de código do plugin oficial de anúncios do Discourse. Basicamente, removi as redes de anúncios e refactorizei o código de anúncios internos (tudo documentado no README) para servir tags do nosso servidor de anúncios Revive, filtrando anúncios para desktop ou mobile (o Revive ainda não suporta tags responsivas). Aqui está o redesenho atual:

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

Status:

  • Problema com a renderização de tags <script> (síncronas e assíncronas), mas funciona bem com tags <iframe>

A Fazer:

  • Corrigir o problema de renderização das tags <script> e <iframe>

Exemplos:

Esta tag iframe funciona bem:

<!-- Revive Adserver iFrame Tag - Gerado com 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>

Esta tag JS assíncrona não será renderizada (este é o formato de tag que normalmente usamos):

<!-- Revive Adserver Asynchronous JS Tag - Gerado com 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>

Da mesma forma, esta tag JS não será renderizada:

<!-- Revive Adserver Javascript Tag - Gerado com 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>

Tentativas de Correção:

Tentei htmlSafe() e chaves triplas (triple handlebars), sem sucesso. Não faço ideia de por que apenas a tag iframe é renderizada, mas as tags JS não são! Parece ser um problema do “emberjs”, algo que não entendo, sendo um iniciante em Ember.js e Rails.

Quando você precisa que seja feito?

Sem pressa, não pretendemos usar isso tão cedo; é algo que estou construindo para “o futuro”.

Qual é o seu orçamento, em USD, que você pode oferecer para esta tarefa?

Todas as ofertas razoáveis para me ajudar a superar esse muro de renderização do Ember.js são apreciadas e bem-vindas.

Notas:

Para os interessados, não utilizo o DFP. Simplesmente não gosto dele. O Revive funciona bem para nós (hospedagem própria), mas quando essa solução funcionar, deverá funcionar bem com o DFP e outras tags de servidores de anúncios também, então o código-fonte permanecerá livremente disponível para todos que possam ter uma necessidade semelhante.

Site de teste (temporário, apenas para testes):

Site de teste removido.

1 Curtiu

Este GIG foi concluído:

O sucesso foi alcançado ao adicionar o script externo diretamente ao cabeçalho do tema com algum JS, assim:

<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>

e então chamando apenas esta parte da tag do Revive Adserver, especificando a zona de anúncio, no código do plugin, assim:

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

Obrigado!

PS: Não foi possível encontrar uma solução em Ember.js, pois, conforme a documentação do Ember, o Handlebars não aceita tags <script>. Talvez tente encontrar uma maneira de fazer isso no Ember.js no futuro…

8 Curtiram