Vložení AdSense kódu do stránek zasílaných jako application/xhtml+xml

Každý, kdo se zajímá o dění na českém internetu a publikování obsahu, pravděpodobně zaznamenal spuštění reklamního programu AdSense firmy Google, který umožňuje umístit na vaše stránky reklamní kód, jehož obsah by měl souviset s vaší stránkou. Pokud jste to nezaznamenali, tak se koukněte pod článek.

Bohužel patřím mezi šílence, kteří rádi drží krok s moderními trendy, a proto na některých stránkách používám XHTML ve verzi 1.1, přičemž je podle doporučení organizace W3C zasílám pod typem application/xhtml+xml. Mezi problémy patří především to, že musím rozlišovat prohlížeče, které jsou tento mimetype schopny zpracovat (kdo hádá, že IE mezi ně nepatří, má půl bodu – je to příliš lehká otázka), a zasílat jim stránky pod starším text/html, druhý problém je to, že redakční systém musí být dostatečně schopný, aby nevypustil stránku, která není well-formed (on pak nějak xml parser neví, co s tím).

Spuštění AdSense pro české stránky jsem přivítal, u českých systémů jsem bohužel postrádal relevanci k obsahu, čímž jaksi ztrácely smysl. Bohužel po umístění na stránky přišlo překvapení: kód fungoval jen pod IE (a vlastně taky pod Konquerorem, dál jsem neexperimentoval). Docela problém, když Operu a Firefox používá na zmiňovaných stránkách kolem 60% návštěvníků. Po krátké komunikaci s podporou AdSense jsem se dobral podstaty problému (podpora zas až tak nepomohla, napoprvé mi doporučili vyhledávat na google „základy HTML“), kterou se (kdo ví už teď, dostává druhý půlbod) stal fakt, že kód AdSense není kompatibilní s  xhtml stránkami zasílanými jako XML (mohl jsem na to přijít i dřív, ale ke všemu jsem přehlédl blokující výraz v AdBlocku). To mi následně potvrdila i podpora AdSense s tím, že o problému ví a jejich inženýři na tom pracují (ehm, přepsat javascriptový kód tak, aby nepoužíval document.write(); a místo toho upravoval DOM reprezentaci dokumentu bych snad napsal i já za jeden den) a opět doporučila použít Google. A tentokrát fakt pomohl.

Takže jaké že je řešení? Radu mi poskytly tyto stránky. Principem je to, že prohlížečům, kterým poskytujeme stránky jako application/xhtml+xml, nabídneme místo AdSense kódu přímo vloženého do stránky tag <object> obsahující jinou stránku, obsahující AdSense kód, zaslanou tentokrát jako text/html.

Kód vložený do stránky, na které se má zobrazovat reklama, vypadá nějak takto:
<object data="googlead.php" type="text/html" width="500" height="80"></object>

A samotná stránka ukrytá pod názvem googlead.php může vypadat třeba takhle:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Half-Life2 google advert iframe</title>
	<style>
		html {
			margin:0;
			padding:0;
			overflow:hidden;
			background-color:#eeeeee;
		}
		body {
			margin:0;
			padding:0;
			background-color:#eeeeee;
		}
	</style>
</head>
<body>
	<div>
		<script type="text/javascript"><!--
			google_ad_client = "pub-xxxxxxxxxxxxxx";
			google_ad_width = 728;
			google_ad_height = 90;
			google_ad_format = "728x90_as";
			google_ad_type = "text_image";
			google_ad_channel = "";
		//--></script>
		<script type="text/javascript"
			src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
		</script>
	</div>
</body>
</html>

Samozřejmě prohlížečům, kterým posíláme text/html bude asi lepší do stránky vkládat kód klasicky (aspoň u IE se stránka vkládaná přes objekt zobrazovala všelijak a nechtělo se mi ztrácet spoustu času pokusy o zprávné vykreslení).

Inspirace/Zdroj: Keystone Websites

Podobné články

Komentujte

Název: (Required)

Email: (Required)

Website:

Comment: