[ОПЛАТИМАЯ ЗАДАЧА] Помощь с рендерингом SCRIPT-тегов Revive Ad Server для плагина Draft

Краткое описание

Я создал черновик плагина для сервера объявлений Revive на основе подмножества кода официального плагина объявлений Discourse. По сути, я удалил сети объявлений и переписал код внутренних объявлений (все это описано в 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() и тройные фигурные скобки Handlebars, но без успеха. Не понимаю, почему отображается только тег iframe, а JS-теги не работают! Похоже на проблему с “emberjs”, в которой я не разбираюсь, так как я новичок в 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: Не удалось найти решение для Embers.js, так как, судя по документации Ember, Handlebars не принимает теги <script>. Возможно, в будущем попробую найти способ сделать это в Ember.js…

8 лайков