Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Key indicators:
- Scripts are loaded from the domain js.sapo.pt
- The div containers carry data-pub-* attributes — this is SAPO CPU's proprietary syntax
- The Floor Ad has an onclick that calls window.SAPO.CPU.closeFloorad() — a direct reference to the SAPO JS object
- Style and script element IDs carry the CPU- prefix — this is SAPO's Content Publishing Unit system
- 1. SAPO CPU loader scripts
- <!-- Prebid.js — Header Bidding, loaded from js.sapo.pt -->
- <script id="CPU-HEADERBID-SCRIPT" type="text/javascript"
- src="//js.sapo.pt/Projects/CPU/latest/prebid10.17.0.js">
- </script>
- <!-- Main SAPO ad management script: LazyPub -->
- <script src="https://js.sapo.pt/Projects/CPU/latest/lazypub.min.js">
- </script>
- <!-- Google Publisher Tag (injected by SAPO CPU) -->
- <script id="CPU-DOUBLECLICK-SCRIPT" type="text/javascript"
- src="https://securepubads.g.doubleclick.net/tag/js/gpt.js">
- </script>
- <!-- DoubleVerify ad verification (injected by SAPO CPU) -->
- <script id="CPU-DV-TAG" type="text/javascript" async="async"
- src="https://pub.doubleverify.com/dvtag/33739878/DV1349746/pub.js">
- </script>
- <!-- CSS for AppNexus formats — targets [data-pub-formatid] attributes -->
- <style id="CPU-APPNEXUS-STYLE">
- /* selectors: [data-pub-formatid="Outstream"],
- div[data-pub-formatid="Richmedia"],
- div[data-pub-formatid="AutoListagem"] */
- </style>
- <!-- CSS for the Floor Ad format -->
- <style id="CPU-DFP-STYLE">
- /* selectors: [data-pub-formatid="Floorad"],
- [data-pub-formatid="Floorad"] > div,
- [data-pub-formatid="Floorad"] > div > div,
- [data-pub-formatid="Floorad"] > div > div iframe */
- </style>
- 2. Ad slots — the common pattern
- All slots are <div> elements with data-pub-* attributes. lazypub.min.js scans the DOM for these attributes and initialises the ads:
- Homepage:
- <!-- Richmedia (top-of-page billboard) -->
- <div id="hp-billboard" style="min-height:255px !important">
- <div id="RichmediaPos1"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="HP_Homepage"
- data-pub-formatid="Richmedia"
- data-observer="true"
- data-pub-processed="yes"
- data-pub-counted="yes">
- </div>
- </div>
- <!-- OOP (Out-Of-Page, hidden slot) -->
- <div class="container mt-130 d-none d-lg-block destaques">
- <div id="OOPPos1"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="HP_Homepage"
- data-pub-formatid="OOP"
- data-observer="true"
- data-pub-processed="yes"
- data-pub-counted="yes">
- </div>
- </div>
- <!-- MPU (300x250, right sidebar) -->
- <div class="col-md-3 mrec-direita add-text-pub">
- <div id="MPUPos1"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="HP_Homepage"
- data-pub-formatid="MPU"
- data-observer="true">
- </div>
- </div>
- <!-- MPU (300x250, second sidebar) -->
- <div class="col-md-3 add-text-pub">
- <div id="MPUPos2"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="HP_Homepage"
- data-pub-formatid="MPU"
- data-observer="true">
- </div>
- </div>
- <!-- Billboard (wide banner between content sections) -->
- <div class="container-fluid add-text-pub text-center">
- <div id="BillboardPos1"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="HP_Homepage"
- data-pub-formatid="Billboard"
- data-observer="true">
- </div>
- </div>
- <!-- Halfpage (300x600, right column) -->
- <div id="mrec" class="d-none d-xl-flex col-xl-3 add-text-pub">
- <div id="HalfpagePos1"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="HP_Homepage"
- data-pub-formatid="Halfpage"
- data-observer="true">
- </div>
- </div>
- <!-- Leaderboard (728x90, horizontal banner) -->
- <div id="hp-leaderboard add-text-pub">
- <div id="LeaderboardPos1"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="HP_Homepage"
- data-pub-formatid="Leaderboard"
- data-observer="true"
- style="text-align:center;">
- </div>
- </div>
- 3. Mobile MPU slots (hidden on desktop)
- <!-- MPUPos3 — mobile only (d-lg-none) -->
- <div class="container d-lg-none mrec-home-mobile pub-height text-center">
- <div id="MPUPos3" data-pub="appNexus" data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="HP_Homepage" data-pub-formatid="MPU" data-observer="true">
- </div>
- </div>
- <!-- MPUPos4, MPUPos5 — hidden on sm and above -->
- <div class="container d-sm-none mrec-home-mobile text-center add-text-pub">
- <div id="MPUPos4" data-pub="appNexus" data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="HP_Homepage" data-pub-formatid="MPU" data-observer="true">
- </div>
- </div>
- <!-- MPUPos6 — mobile slot in the lower page section -->
- <div class="container d-lg-none mrec-home-mobile text-center add-text-pub">
- <div id="MPUPos6" data-pub="appNexus" data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="HP_Homepage" data-pub-formatid="MPU" data-observer="true">
- </div>
- </div>
- 4. Floorad (sticky bottom banner) — special case
- <!-- Parent div itself carries the data-pub attributes -->
- <div id="FlooradPos1_parent"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="HP_Homepage"
- data-pub-formatid="Floorad"
- data-pub-lazy="false"
- data-observer="true"
- data-pub-processed="yes"
- data-pub-counted="yes">
- <!-- Child div — its close button calls window.SAPO.CPU.closeFloorad() -->
- <div id="FlooradPos1"
- data-pub-counter="true"
- data-pub-processed="yes"
- style="padding-top:0px;opacity:0;point-event:none;"
- onclick="{ window.SAPO.CPU.closeFloorad('#FlooradPos1_parent'); }">
- </div>
- </div>
- 5. SAS slot (SmartAdServer, not AppNexus — still managed by SAPO CPU)
- <!-- data-pub="sas" — SmartAdServer provider, injected directly into <body> -->
- <div id="72594Pos1"
- data-pub="sas"
- data-pub-siteid="214853"
- data-pub-pageid="905761"
- data-pub-formatid="72594"
- data-pub-lazy="false"
- data-observer="true"
- data-pub-processed="yes"
- data-pub-counted="yes">
- </div>
- In summary: SAPO CPU is a platform that scans the DOM for all divs carrying data-pub attributes and automatically initialises ads for them via Google GPT and Prebid.js. The attributes data-pub-siteid="IMPALA_Tv7Dias" and data-pub-pageid="HP_Homepage" are the site and page identifiers within the SAPO system.
- Article pages (Some tags are on the homepage, this is a list that is only on the article pages):
- <!-- InContent (native ad inside article body) -->
- <div id="content-624762" class="content">
- <div id="InContentPos1"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="ARTICLE_ROS"
- data-pub-formatid="InContent"
- data-observer="true"
- data-pub-processed="yes"
- data-pub-counted="yes">
- </div>
- </div>
- <!-- Richmedia mobile (second Richmedia slot, mobile-only) -->
- <div class="ros-leaderboard d-lg-none after-text">
- <div id="RichmediaPos2"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="ARTICLE_ROS"
- data-pub-formatid="Richmedia"
- data-observer="true">
- </div>
- </div>
- <!-- Halfpage_btf (below-the-fold Halfpage, related content zone) -->
- <div class="bottom-pub">
- <div id="Halfpage_btfPos1"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="ARTICLE_ROS"
- data-pub-formatid="Halfpage_btf"
- data-observer="true"
- data-pub-processed="yes"
- data-pub-counted="yes">
- </div>
- </div>
- <!-- Leaderboard desktop (second Leaderboard slot, desktop-only) -->
- <div class="ros-leaderboard d-none d-lg-block">
- <div id="LeaderboardPos2"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="ARTICLE_ROS"
- data-pub-formatid="Leaderboard"
- data-observer="true">
- </div>
- </div>
- <!-- Floorad (sticky floor ad, appended to body) -->
- <div id="FlooradPos1_parent"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="ARTICLE_ROS"
- data-pub-formatid="Floorad"
- data-observer="true"
- data-pub-processed="yes"
- data-pub-counted="yes">
- </div>
- <!-- Custom slot 72594 (appended to body) -->
- <div id="72594Pos1"
- data-pub="appNexus"
- data-pub-siteid="IMPALA_Tv7Dias"
- data-pub-pageid="ARTICLE_ROS"
- data-pub-formatid="72594"
- data-observer="true"
- data-pub-processed="yes"
- data-pub-counted="yes">
- </div>
Add Comment
Please, Sign In to add comment