ES5 Publisher Mode Demo: handball4all

This page contains the complete ad configuration


🔧 Integration

This code should be placed in the head of your page


<link rel="preconnect" href="https://securepubads.g.doubleclick.net" crossorigin="anonymous">
<link rel="preconnect" href="[[domain]]" crossorigin="anonymous">
<!-- sourcepoint CMP (required) -->
<script>
  !function () { var e = function () { var e, t = "__tcfapiLocator", a = [], n = window; for (; n;) { try { if (n.frames[t]) { e = n; break } } catch (e) { } if (n === window.top) break; n = n.parent } e || (!function e() { var a = n.document, r = !!n.frames[t]; if (!r) if (a.body) { var i = a.createElement("iframe"); i.style.cssText = "display:none", i.name = t, a.body.appendChild(i) } else setTimeout(e, 5); return !r }(), n.__tcfapi = function () { for (var e, t = arguments.length, n = new Array(t), r = 0; r < t; r++)n[r] = arguments[r]; if (!n.length) return a; if ("setGdprApplies" === n[0]) n.length > 3 && 2 === parseInt(n[1], 10) && "boolean" == typeof n[3] && (e = n[3], "function" == typeof n[2] && n[2]("set", !0)); else if ("ping" === n[0]) { var i = { gdprApplies: e, cmpLoaded: !1, cmpStatus: "stub" }; "function" == typeof n[2] && n[2](i) } else a.push(n) }, n.addEventListener("message", (function (e) { var t = "string" == typeof e.data, a = {}; try { a = t ? JSON.parse(e.data) : e.data } catch (e) { } var n = a.__tcfapiCall; n && window.__tcfapi(n.command, n.version, (function (a, r) { var i = { __tcfapiReturn: { returnValue: a, success: r, callId: n.callId } }; t && (i = JSON.stringify(i)), e.source.postMessage(i, "*") }), n.parameter) }), !1)) }; "undefined" != typeof module ? module.exports = e : e() }();
</script>
<script>
window._sp_ = {
    config: {
        accountId: 270,
        baseEndpoint: 'https://cdn.privacy-mgmt.com',
        propertyHref: 'https://handball4all.de'
    }
}
</script>
<script async src="https://cdn.privacy-mgmt.com/wrapperMessagingWithoutDetection.js"></script>

<!-- your ad tag -->
<script async nomodule src="[[domain]]moli_es5_f1e208b28596999bd88a.min.js"></script>

You can find more information about the configuration of the tag in our Api Docs.

Init code

All ad slots are lazy as the CMS page are single page apps and the ad slot containers are loaded from an external site. This requires the site to do some more work to initialize everything correctly.


<script>
window.moli = window.moli || {que: []};
window.moli.que.push(function (moliAdTag) {
    // single page app mode allows multiple refreshs per ad unit
    moliAdTag.enableSinglePageApp();
    // trigger ads
    moliAdTag.requestAds();
});
</script>
                

Every slot needs to push the dispatch event call into this queue to make sure that the events are properly received.

🧾 Sourcepoint CMP

Basic setup documentation

Footer link for the privacy modal

TCF 2 and german law require the privacy settings to be accessible at all times. A clean way to do this is to add a link into the footer that opens the privacy manager.

Privacy Settings

<a href="#" onclick="window._sp_.loadPrivacyManagerModal(178329);">Privatsphäre></a> 

Privacy Page

Additionally to sourcepoint scripts integrated in the head of your page, place this button on your privacy page to open the privacy manager

<button type="button" onclick="window._sp_.loadPrivacyManagerModal(178329);">Datenschutz Einstellungen öffnen></button>

🔮 Moli Console

You can get more details by opening the moli console.

Or if you are developer type this into the javascript console

moli.openConsole()

🚧 Ad Slots

h4a_header

<div id="h4a_header">
    <script>
    window.moli = window.moli || {que: []};
    window.moli.que.push(function(moli) { moli.refreshAdSlot('h4a_header')});
    </script>
</div>

h4a_footer

<div id="h4a_footer">
    <script>
    window.moli = window.moli || {que: []};
    window.moli.que.push(function(moli) { moli.refreshAdSlot('h4a_footer')});
    </script>
</div>

h4a_sidebar_right

<div id="h4a_sidebar_right">
    <script>
    window.moli = window.moli || {que: []};
    window.moli.que.push(function(moli) { moli.refreshAdSlot('h4a_sidebar_right')});
    </script>
</div>

h4a_sidebar_right_spo

This slot only exists on spo.handball4all.de as it is based on a different layout and backend. The slot is not lazy and thus needs no event to be dispatched.

<div id="h4a_sidebar_right_spo"></div>

h4a_sidebar_left

<div id="h4a_sidebar_left">
    <script>
    window.moli = window.moli || {que: []};
    window.moli.que.push(function(moli) { moli.refreshAdSlot('h4a_sidebar_left')});
    </script>
</div>

h4a_content

<div id="h4a_content">
    <script>
    window.moli = window.moli || {que: []};
    window.moli.que.push(function(moli) { moli.refreshAdSlot('h4a_content')});
    </script>
</div>

h4a_mobile_stickyad

<div id="h4a_mobile_stickyad">
    <script>
    window.moli = window.moli || {que: []};
    window.moli.que.push(function(moli) { moli.refreshAdSlot('h4a_mobile_stickyad')});
    </script>
</div>