clickio

Добавление тестовых блоков на AMP страницу паблишера

Apr 1st, 2021 (edited)
1,132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function(d,w){    
  2.     let adUnitSiteId    = "201679";       // ID сайта, берем в коде блока    
  3.     let adUnitsSettings = [
  4.         {
  5.             slot: "/45470634/clickio_area_646306_300x250",
  6.             width: 300,
  7.             heihgt: 250,
  8.             refresh: false,
  9.             blockOnConsent: true,
  10.             multiSizeValidation: false,
  11.             npaOnUnknownConsent: false,
  12.             elementSelector: "body",
  13.             position: "top"
  14.  
  15.                  // Селектор элемента, в который вставляем контейнер
  16.         } // Для добавления дополнительных блоков через запятую добавить в массив настройки в фигурных скобках
  17.     ];
  18.     let removeSelector = ".classToRemove";    // Селектор для удаления элементов
  19.    
  20.     (function(){ // Удаление элементов со страницы по селектору
  21.         let s = d.querySelectorAll(removeSelector);
  22.         if (s && s.length)
  23.         {
  24.             Array.from(s).forEach(function(e){
  25.                 e.remove();
  26.             });
  27.         }
  28.     })();
  29.     // Подключаем amp-ad в head
  30.     (function(){
  31.         let ss = d.querySelector("script[src^=\"amp-ad-0.1.js\"]");
  32.         if (!ss) {
  33.             let s = d.createElement("script");
  34.             s.src = "https://cdn.ampproject.org/v0/amp-ad-0.1.js";
  35.             s.async = "async";
  36.             s.setAttribute("custom-element", "amp-ad");
  37.             d.querySelector("head").appendChild(s);
  38.         }
  39.     })();
  40.     // Подключаем amp-iframe в head
  41.     (function(){
  42.         let ss = d.querySelector("script[src=\"amp-iframe-0.1.js\"]");
  43.         if (!ss) {
  44.             let s = d.createElement("script");
  45.             s.src = "https://cdn.ampproject.org/v0/amp-iframe-0.1.js";
  46.             s.async = "async";
  47.             s.setAttribute("custom-element", "amp-iframe");
  48.             d.querySelector("head").appendChild(s);
  49.         }
  50.     })();
  51.  
  52.     function addContainer(cId, s, p) {
  53.         let c = d.createElement('div'); // Создаём контейнер с указанным ID
  54.         c.id  = cId;
  55.         let e = d.querySelector(s);
  56.         if(e)
  57.         {
  58.             if (p && p === "top") // Перед первым элементом
  59.             {
  60.                 let ch = d.querySelector(s + " > :first-child");
  61.                 if(ch) e.insertBefore(c, ch)
  62.                 else   e.appendChild(c); // Усли нет дочерних элементов - просто добавляем к родителю
  63.             }
  64.             else e.appendChild(c); // Добавляем в конец
  65.         }
  66.         return c;
  67.     }
  68.     let containersId = "clickio_adunit";   // ID контейнеров ad unit'ов (можно не трогать)
  69.     let k = 1;                             // счетчик, прибавляемык к ID контейнера
  70.     adUnitsSettings.forEach(function(adUnit){
  71.         let cId = containersId + "-" + k;
  72.         let c = addContainer(cId, adUnit.elementSelector, (adUnit.position?adUnit.position:false)); // Вызываем функцию вставки контейнера
  73.         let ad = d.createElement("amp-ad");
  74.         ad.setAttribute("width", adUnit.width);
  75.         ad.setAttribute("height", adUnit.height);
  76.         ad.setAttribute("slot", adUnit.slot);
  77.         ad.setAttribute("type", "doubleclick");
  78.         ad.setAttribute("data-multi-size-validation", adUnit.multiSizeValidation?"true":"false");
  79.         if(adUnit.refresh)
  80.         {
  81.             ad.setAttribute("data-enable-refresh", "30");
  82.             ad.setAttribute("json", "{\"targeting\":{\"autorefresh\":\"30_sec\"}}");
  83.         }
  84.         if(adUnit.blockOnConsent)
  85.         {
  86.             ad.setAttribute("data-block-on-consent", "true");
  87.         }
  88.         if(adUnit.npaOnUnknownConsent)
  89.         {
  90.             ad.setAttribute("data-npa-on-unknown-consent", "true");
  91.         }
  92.         c.appendChild(ad);
  93.     });
  94. })(document, window);
Add Comment
Please, Sign In to add comment