Ir al contenido principal

Cómo bloquear dinámicamente los tipos de anuncios con data-block-ad-types

Como editor, es posible que desee controlar qué tipos de anuncios se muestran a sus visitantes en función de condiciones específicas como la autenticación del usuario, la configuración de preferencias del usuario u otros factores. En este artículo, le mostramos dos fragmentos de código sobre cómo puede gestionar dinámicamente qué tipos de anuncios se muestran o se bloquean en su zona publicitaria de ExoClick.

Para que esto sea posible, estamos aprovechando la función data-block-ad-types de ExoClick, y le estamos dando un control dinámico sobre múltiples anuncios sin necesidad de complejas integraciones de backend.

EJEMPLO 1 - Mostrar anuncios dinámicamente en función de los datos introducidos por el usuario

Este método es ideal para ajustar las restricciones publicitarias en función del consentimiento del usuario. Cuando un visitante acepta sus condiciones, sus preferencias se almacenan en el localStorage de su navegador. Esta acción modifica permanentemente la configuración de anuncios para ese usuario en todas las visitas posteriores, lo que le permite ofrecer una gama más amplia de tipos de anuncios una vez que se da el consentimiento.


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />

<script>

const adZoneConfigs = [
{ containerId: "zid-5662140", class: "eas6a97888e20", zoneid: "5662140" },
{ containerId: "zid-5532602", class: "eas6a97888e2", zoneid: "5532602" },
];

// CHANGE BLOCKED AD TYPES BASED ON BOOLEAN VALUE AND RE RENDER THE ADS
let updateAdRestrictions = (value) => {
if (value === true) {
adZoneConfigs.forEach((adZone) => {
let adContainer = document.getElementById(adZone.containerId);
adContainer.innerHTML = "";
adContainer.innerHTML = `
<ins class="${adZone.class}" data-zoneid="${adZone.zoneid}" data-block-ad-types=""></ins>

`;
(AdProvider = window.AdProvider || []).push({ serve: {} });
});
}
return;
};
</script>

</head>
<body>
<h1>TEST PAGE</h1>

<!-- ACCEPT TEMRS AND ADD CONSENT TO LOCAL STORAGE ON CLICK -->
<button
id="accept-terms-button"
onclick="updateAdRestrictions(true); localStorage.setItem('acceptTerms', true); this.remove();"
>
I accept the terms and conditions
</button>

<main>
<script
async
type="application/javascript"
src="https://a.magsrv.com/ad-provider.js"
></script>

<h2>zid-5662140</h2>
<div id="zid-5662140">
<ins
class="eas6a97888e20"
data-zoneid="5662140"
data-block-ad-types="101"
></ins>

<script>
(AdProvider = window.AdProvider || []).push({ serve: {} });
</script>
</div>


<h2>zid-5532602</h2>
<div id="zid-5532602">
<ins
class="eas6a97888e2"
data-zoneid="5532602"
data-block-ad-types="101"
></ins>
<script>
(AdProvider = window.AdProvider || []).push({ serve: {} });
</script>
</div>
</main>


<!-- CHECK LOCAL STORAGE FOR VERIFIED COOKIE AND CALL updateAdRestrictions IF THE USER IS ALREADY VERIFIED -->
<!-- MUST BE PLACED AFTER THE AD ZONES' SCRIPTS -->
<script>
const cookie = localStorage.getItem("acceptTerms");
const parsedCookie = JSON.parse(cookie)
if (parsedCookie === true) {
updateAdRestrictions(true);
document.getElementById("accept-terms-button").remove();
}
</script>
</body>
</html>

EJEMPLO 2 - Mostrar anuncios dinámicamente en función de un parámetro URL

Este método es eficaz para modificar la configuración de los anuncios en función de un parámetro de URL. Por ejemplo, después de que un usuario se autentique, se le puede redirigir a una URL que contenga un parámetro como ?user_verified=1. Este parámetro indica a la página que el usuario está verificado, lo que hace que el sistema muestre tipos de anuncios menos restrictivos para esa sesión.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Test Page</title>
</head>

<body>
<header>
<ins
class="eas6a97888e20"
data-zoneid="5662140"
data-block-ad-types="101"
></ins>

<script
async
type="application/javascript"
src="https://a.magsrv.com/ad-provider.js"
></script>

<script>
(AdProvider = window.AdProvider || []).push({ serve: {} });
</script>
</header>

<footer id="footer-ads">
<script
async
type="application/javascript"
src="https://a.magsrv.com/ad-provider.js"
></script>

<ins
class="eas6a97888e2"
data-zoneid="5532602"
data-block-ad-types="101"
></ins>

<script>
(AdProvider = window.AdProvider || []).push({ serve: {} });
</script>
</footer>

<script>
const userVerified = new URLSearchParams(window.location.search).get(
"user_verified"
);
const headerElement = document.querySelector('[data-zoneid="5662140"]');
const footerElement = document.querySelector('[data-zoneid="5532602"]');
const elementsArr = [headerElement, footerElement];
if (userVerified == 1) {
elementsArr.forEach((element) => {
element.setAttribute("data-block-ad-types", "");
const newElement = element.cloneNode(true);
element.parentNode.replaceChild(newElement, element);
});
}
</script>
</body>
</html>