[TRABAJO PAGADO] Ayuda con la renderización de etiquetas SCRIPT de Revive Ad Server para el plugin Draft

Resumen

He creado un borrador de un plugin de servidor de anuncios revive basado en un subconjunto de código del plugin oficial de anuncios de Discourse. Básicamente, eliminé las redes publicitarias y reestructuré el código de anuncios internos (todo documentado en el README) para servir etiquetas desde nuestro servidor de anuncios revive, filtrando para anuncios de escritorio o móviles (Revive aún no soporta etiquetas responsivas). Aquí está el rediseño actual:

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

Estado:

  • Problema con el renderizado de etiquetas <script> (síncronas y asíncronas), pero funciona bien con etiquetas <iframe>

Por hacer:

  • Arreglar el problema de renderizado de etiquetas <script> y <iframe>

Ejemplos:

Esta etiqueta iframe funciona bien:

<!-- Etiqueta iFrame de Revive Adserver - Generada con 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 etiqueta JS asíncrona no se renderiza (este es el formato de etiqueta que normalmente usamos):

<!-- Etiqueta JS asíncrona de Revive Adserver - Generada con 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>

Asimismo, esta etiqueta JS no se renderiza:

<!-- Etiqueta Javascript de Revive Adserver - Generada con 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>

Intentos de solución:

He probado htmlSafe() y las llaves triples de Handlebars, sin éxito. No tengo idea de por qué solo la etiqueta iframe se renderiza, ¡pero las etiquetas JS no! Parece ser un problema de “Ember.js”, algo que no entiendo siendo un novato en Ember.js y Rails.

¿Cuándo lo necesitas listo?

No hay prisa, no planeamos usar esto pronto; es algo que estoy construyendo para “el futuro”.

¿Cuál es tu presupuesto, en $USD, que puedes ofrecer por esta tarea?

Se agradecen y aceptan todas las ofertas razonables para ayudarme a superar este muro de renderizado de Ember.js.

Notas:

Para los interesados, no uso DFP. Simplemente no me gusta. Revive funciona bien para nosotros (autoalojado), pero cuando esta solución funcione, debería funcionar bien con DFP y otras etiquetas de servidores de anuncios también, por lo que el código fuente permanecerá disponible gratuitamente para todos los que puedan tener un requisito similar.

Sitio de prueba (temporal, solo para pruebas):

Sitio de prueba eliminado.

1 me gusta

Este GIG está completo:

El éxito se logró al agregar el script externo directamente al encabezado del tema con algo de JS, así:

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

y luego llamando solo a esta parte de la etiqueta de Revive Adserver, especificando la zona de anuncios, en el código del plugin, así:

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

¡Gracias!

PD: No pude encontrar una solución con Embers.js, ya que, según la documentación de Ember, Handlebars no acepta etiquetas <script>. Quizás intente encontrar una manera de hacer esto en Ember.js en el futuro…

8 Me gusta