[عمل مدفوع] مساعدة في عرض وسم 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! يبدو أن المشكلة تتعلق بـ “Ember.js”، وهو أمر لا أفهمه كونه جديدًا عليّ في Ember.js و Rails.

متى تحتاج إلى أن يكون الأمر جاهزًا؟

لا عجلة، لا نخطط لاستخدام هذا قريبًا؛ إنه شيء أبنيه من أجل “المستقبل”.

ما هو ميزانيتك، بالدولار الأمريكي، التي يمكنك تقديمها لهذه المهمة؟

جميع العروض المعقولة لمساعدتي على تجاوز هذا الحاجز في عرض Ember.js موضع تقدير ورحب بها.

ملاحظات:

لأولئك المهتمين، أنا لا أستخدم DFP. ببساطة لا يعجبني. يعمل Revive بشكل جيد معنا (الاستضافة الذاتية)، ولكن عندما تعمل هذه الحل، يجب أن تعمل بشكل جيد مع DFP ووسوم خوادم الإعلانات الأخرى أيضًا، لذا فإن الكود المصدري سيظل متاحًا مجانًا للجميع الذين قد يكون لديهم متطلبات مماثلة.

موقع الاختبار (مؤقت للاختبار فقط):

تم إزالة موقع الاختبار.

إعجاب واحد (1)

تم إكمال هذه المهمة بنجاح:

تم تحقيق النجاح بإضافة السكربت الخارجي إلى رأس القالب مباشرة باستخدام بعض كود 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>

شكرًا لك!

ملاحظة: لم أتمكن من العثور على حل باستخدام Embers.js``، حيث يبدو من وثائق Ember أن Handlebars لا يقبل وسوم ``. ربما أحاول إيجاد طريقة للقيام بذلك في Ember.js في المستقبل…

8 إعجابات