Краткое описание
Я создал черновик плагина для сервера объявлений 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&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&cb=INSERT_RANDOM_NUMBER_HERE' target='_blank'><img src='http://srv.adserver.com/www/delivery/avw.php?zoneid=63&cb=INSERT_RANDOM_NUMBER_HERE&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 ('&cb=' + m3_r);
if (document.MAX_used != ',') document.write ("&exclude=" + document.MAX_used);
document.write (document.charset ? '&charset='+document.charset : (document.characterSet ? '&charset='+document.characterSet : ''));
document.write ("&loc=" + escape(window.location));
if (document.referrer) document.write ("&referer=" + escape(document.referrer));
if (document.context) document.write ("&context=" + escape(document.context));
if (document.mmm_fo) document.write ("&mmm_fo=1");
document.write ("'>\</scr"+"ipt>");
//]]>--></script><noscript><a href='http://srv.adserver.com/www/delivery/ck.php?n=aef496cd&cb=INSERT_RANDOM_NUMBER_HERE' target='_blank'><img src='http://srv.adserver.com/www/delivery/avw.php?zoneid=63&cb=INSERT_RANDOM_NUMBER_HERE&n=aef496cd' border='0' alt='' /></a></noscript>
Попытки исправить:
Пробовал использовать htmlSafe() и тройные фигурные скобки Handlebars, но без успеха. Не понимаю, почему отображается только тег iframe, а JS-теги не работают! Похоже на проблему с “emberjs”, в которой я не разбираюсь, так как я новичок в Ember.js и Rails.
Когда это нужно сделать?
Срочности нет, мы не планируем использовать это в ближайшее время; это проект для «будущего».
Какой у вас бюджет в долларах США, который вы можете предложить за эту задачу?
Все разумные предложения, которые помогут мне преодолеть этот тупик с рендерингом в Ember.js, будут с благодарностью приняты.
Примечания:
Для тех, кому интересно: я не использую DFP. Просто он мне не нравится. Revive отлично работает у нас (хостинг на собственных серверах), но когда это решение заработает, оно должно быть совместимо с DFP и другими тегами серверов объявлений, поэтому исходный код останется свободно доступным всем, у кого может возникнуть аналогичная потребность.
Тестовый сайт (временный, только для тестирования):
Тестовый сайт удалён.
