clickio

AMP add ad to page

Mar 4th, 2021 (edited)
821
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_672374_300x250",
  6.             width: 300,
  7.             height: 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.     (function(){ // Подключаем amp-ad в head
  30.         let ss = d.querySelector("script[src^=\"amp-ad-0.1.js\"]");
  31.         if (!ss) {
  32.             let s = d.createElement("script");
  33.             s.src = "https://cdn.ampproject.org/v0/amp-ad-0.1.js";
  34.             s.async = "async";
  35.             s.setAttribute("custom-element", "amp-ad");
  36.             d.querySelector("head").appendChild(s);
  37.         }
  38.     })();
  39.     (function(){ // Подключаем amp-iframe в head
  40.         let ss = d.querySelector("script[src=\"amp-iframe-0.1.js\"]");
  41.         if (!ss) {
  42.             let s = d.createElement("script");
  43.             s.src = "https://cdn.ampproject.org/v0/amp-iframe-0.1.js";
  44.             s.async = "async";
  45.             s.setAttribute("custom-element", "amp-iframe");
  46.             d.querySelector("head").appendChild(s);
  47.         }
  48.     })();
  49.  
  50.     function addContainer(cId, s, p) {
  51.         let c = d.createElement('div'); // Создаём контейнер с указанным ID
  52.         c.id  = cId;
  53.         let e = d.querySelector(s);
  54.         if(e)
  55.         {
  56.             if (p && p === "top") // Перед первым элементом
  57.             {
  58.                 let ch = d.querySelector(s + " > :first-child");
  59.                 if(ch) e.insertBefore(c, ch)
  60.                 else   e.appendChild(c); // Усли нет дочерних элементов - просто добавляем к родителю
  61.             }
  62.             else e.appendChild(c); // Добавляем в конец
  63.         }
  64.         return c;
  65.     }
  66.     let containersId = "clickio_adunit";   // ID контейнеров ad unit'ов (можно не трогать)
  67.     let k = 1;                             // счетчик, прибавляемык к ID контейнера
  68.     adUnitsSettings.forEach(function(adUnit){
  69.         let cId = containersId + "-" + k;
  70.         let c = addContainer(cId, adUnit.elementSelector, (adUnit.position?adUnit.position:false)); // Вызываем функцию вставки контейнера
  71.         let ad = d.createElement("amp-ad");
  72.         ad.setAttribute("width", adUnit.width);
  73.         ad.setAttribute("height", adUnit.height);
  74.         ad.setAttribute("data-slot", adUnit.slot);
  75.         ad.setAttribute("type", "doubleclick");
  76.         ad.setAttribute("data-multi-size-validation", adUnit.multiSizeValidation?"true":"false");
  77.         if(adUnit.refresh)
  78.         {
  79.             ad.setAttribute("data-enable-refresh", "30");
  80.             ad.setAttribute("json", "{\"targeting\":{\"autorefresh\":\"30_sec\"}}");
  81.         }
  82.         if(adUnit.blockOnConsent)
  83.         {
  84.             ad.setAttribute("data-block-on-consent", "true");
  85.         }
  86.         if(adUnit.npaOnUnknownConsent)
  87.         {
  88.             ad.setAttribute("data-npa-on-unknown-consent", "true");
  89.         }
  90.         c.appendChild(ad);
  91.     });
  92. })(document, window);
Add Comment
Please, Sign In to add comment