Branding
Branding je typ reklamy, který je umístěn na pozadí webové stránky za její obsahovou částí a pokrývá veškerý zbývající volný prostor okna prohlížeče – viz ukázka na https://seznam.prehledreklam.cz/cs/sklik/produkt/branding/105/124/.
Branding se vydává do zóny pro leaderboard (branding musí být z naší strany povolen na web/zónu), pokud je aktuální šířka okna větší nebo rovna 1 366 px.
Implementace brandingu v iframu
Branding se standardně vydává v iframu do zóny pro leaderboard, odkud ho výdejový JavaScript přesune do elementu <div id="branding"></div>
, který je ve stránce vytvořen, pokud je aktuální šířka okna větší nebo rovna 1 366 px. V takovém případě se do proměnné adZone
zapíše objekt s parametry pro branding, jinak objekt s parametry pro leaderboard.
<div id="ssp-zone-1234"></div> <!--element pro leaderboard-->
<script>
if (window.innerWidth >= 1366) {
document.body.insertAdjacentHTML('afterbegin', '<div id="ssp-branding-1234"></div>'); // vytvoří element pro branding za <body>
var adZone = {
zoneId: 1234, // číselné ID zóny
width: 2000, // maximální šířka požadované reklamy
id: "ssp-branding-1234", // id elementu pro leaderboard
elements: [
{id: "ssp-zone-1234", width: 970}, // stačí uvést šířku
{id: "ssp-branding-1234", width: 2000, height: 1400}
// je nutné uvést šířku i výšku
]
};
} else {
var adZone = {
zoneId: 1234,
width: 970,
height: 210,
id: "ssp-zone-1234"
}
};
sssp.getAds(adZone); // požadavek na výdej reklamy (objekt adZone lze použít i v rámci multirequestu)
</script>
Zároveň je potřeba doplnit CSS, které zajistí správné umístění brandingu na stránce dle https://seznam.prehledreklam.cz/cs/sklik/produkt/branding/105/124/:
/* styl definující umístění elementu určeného pro vykreslení brandingu k hornímu okraji okna prohlížeče a vodorovně uprostřed okna prohlížeče */
#ssp-zone-1234-branding {
position: fixed;
left: 50%;
transform: translateX(-50%);
margin: 0 auto;
}
/* definice vlastností třídy adFull, která se elementu s brandingem přiřadí v okamžiku, kdy je do něj úspěšně vykreslena reklama; určuje šířku (2000 px) a výšku (1400 px) elementu s brandingem */
#ssp-zone-1234-branding.adFull {
width: 2000px;
height: 1400px;
}
/* příklad definice odsazení těla stránky (předpokládáme umístění v elementu div#page) o 226 px od horního okraje po vykreslení brandingu */
#ssp-zone-1234-branding.adFull ~ #page {
position: relative;
top: 226px;
}
Pokud je potřeba změnit layout stránky při výdeji brandingu (například když je stránka příliš široká a zakrývala by branding), je možné tuto úpravu provést pomocí callbacku, právě když se vydá branding.
<div id="ssp-zone-1234"></div> <!--element pro leaderboard-->
<script>
// Funkce, která připraví stránku na branding
function setBranding(advert, data) {
// Pokud přišel branding bude šířka reklamy 2000
if (advert.width === 2000) {
// ...
var problematicElement = document.getElementById('article-container');
problematicElement.style.width = '1060px';
// ...
}
// Když jsou úpravy hotové, řekneme SSSP aby vydalo reklamu
return sssp.writeAd(advert, data);
}
if (window.innerWidth >= 1366) {
document.body.insertAdjacentHTML('afterbegin', '<div id="ssp-branding-1234"></div>');
var adZone = {
zoneId: 1234,
width: 2000,
// Nastavíme callback který se má zavolat
callback: setBranding,
id: "ssp-zone-1234",
elements: [
{id: "ssp-zone-1234", width: 970},
{id: "ssp-branding-1234", width: 2000, height: 1400}
]
};
} else {
var adZone = {
zoneId: 1234,
width: 970,
height: 210,
id: "ssp-zone-1234"
}
};
sssp.getAds(adZone);
</script>
Alternativní možností je navázání změny layoutu při výdeji brandingu na událost sspadsloaded
. Pokud k této události dojde a zároveň v DOM existuje element označený class="adFull"
a id="ssp-branding-xxxx"
, kde xxxx
je číselný identifikátor zóny (zoneId
), můžeme stránku přizpůsobit brandingu.
window.addEventListener('sspadsloaded', function () {
if (document.querySelector('#ssp-branding-xxxx.adFull')) {
var css = document.createElement('style');
css.type = 'text/css';
var styles = 'body{width 1060px}';
css.appendChild(document.createTextNode(styles));
document.getElementsByTagName('head')[0].appendChild(css);
}
});
Implementace brandingu z dat v JSONu
Požadavek na výdej brandingu ve formátu JSON odesíláme stejně jako u ostatních rozměrů bannerů, avšak jen v případě, pokud má okno prohlížeče šířku alespoň 1 366 px:
<div id="ssp-zone-1234"></div> <!-- element pro leaderboard -->
<div id="ssp-zone-1234-branding"></div> <!-- element pro branding -->
<script src="https://ssp.seznam.cz/static/js/ssp.js"></script>
<script>
sssp.getAds({
zoneId: 1234, // číselné ID zóny
width: 2000, // maximální šířka požadované reklamy
height: 1400, // maximální výška požadované reklamy
callback: function(ads) {
// JS pro zpracování dat, vykreslení reklamy
// a zobrazení měřicích pixelů
}
})
</script>
V uvedeném kódu je ssp-zone-1234
id elementu, do kterého se vykresluje leaderboard, a ssp-branding-1234
je id elementu, do kterého se vykresluje branding. Pokud se v rozhraní pro zónu 1234
povolí formáty 2 000 × 1 400 px a 970 × 210 px, do aukce budou vstupovat oba dva.
Callbacková funkce musí umět jednotlivé formáty v odpovědi nejen rozlišit a vykreslit do správných elementů (je třeba dodržet umístění brandingu a rozměry stránky dle technické specifikace https://seznam.prehledreklam.cz/cs/sklik/produkt/branding/105/124/), ale také provést měření zobrazení (viz Postup nasazení reklamy). Při výše uvedeném zápisu (v objektu zóny záměrně chybí parametr id
) je nezbytné samostatně volat URL pro měření visibilní imprese uvedenou v poli ads.tracking.visible
– viz Callback funkce.
Pro případnou úpravu layoutu stránky platí totéž, co je uvedeno u výdeje brandingu do iframu.