之前我认为google adsense是基于独立IP,所以我想到一个增加google adsense展示次数的方法。当用户浏览一次文章时,展示的是1,2,3广告,当用户刷新的时候,展示的是4,5,6广告。这样就可以增加google adsense展示次数了。没想到google adsense 展示次数不是基于独立IP的。google 帮助文档说明:
每当某个广告在您的网站上展示一次时,我们就会记录一次广告展示。广告格式不同,广告的展示次数也有所不同;例如,每当您的网站展示竖幅广告时,您就会在报告中看到两次广告展示。另外请注意,任意广告单元中的广告展示次数还会因所展示的是标准文字广告、独占型文字广告还是图片广告而有所不同。
我当时的做法是基于cookie的,把一个计数存在cookie中。每次访问时,会自增1。下面是原型代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>test cookie</title> </head> <body> <p>Test</p> <?php function setCookieFunction($testVar = 1){ $cookieName = 'waitingfyAdIndex'; setcookie($cookieName,$testVar,time() + 36000); } $adIndex = 1; $cookieName = 'waitingfyAdIndex'; $maxIndex = 3; if(!isset($_COOKIE[$cookieName])){//如果未找到cookie的话 setCookieFunction(1); }else{ $adIndex = $_COOKIE[$cookieName]; $adIndex++; if($adIndex == ($maxIndex + 1)){ $adIndex = 1; } setCookieFunction($adIndex); } ?> <?php if($adIndex == 1){ //展示广告 1,2,3 ?> <div style="width: 50px;height: 50px; background-color: #ccc"> 1 </div> <?php }else if($adIndex == 2){//展示广告 4,5,6 ?> <div style="width: 50px;height: 50px; background-color: #00ff00"> 2 </div> <?php }else if($adIndex == 3){//展示广告 7,8,9 ?> <div style="width: 50px;height: 50px; background-color: #0000ff"> 3 </div> <?php }?> </body> </html>
没有想到这块代码在wordpress的主题php页面中不起作用!
查了些资料,说必须把setcookie方法放到functions.php中。像下面的代码:
function set_cookie_function() { $cookieName = 'waitingfyAdIndex'; setcookie($cookieName, 1, time()+36000 ,COOKIEPATH, COOKIE_DOMAIN,false); } add_action( 'init', 'set_cookie_function');//hook
就是在wordpress中必须填上setcookie的后两个参数,包括cookie作用的路径和域名,而且必须在所有html标签输出之前设置cookie。好吧,我用了这代码,发现还是会出现警告:Cannot modify header information – headers already sent by …
这还不是最大的问题,最大的问题是不支持变量!修改成下面的代码就不行了。
function set_cookie_function($value) { $cookieName = 'waitingfyAdIndex'; setcookie($cookieName, $value, time()+36000 ,COOKIEPATH, COOKIE_DOMAIN,false); } add_action( 'init', 'set_cookie_function');//hook
到这里我就懒得再用php来设置cookie了。最后用了javascript来设置cookie
<script type="text/javascript"> //javascript 设置cookie function setCookie(c_name,value,exdays){ var exdate=new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); document.cookie=c_name + "=" + c_value; } //javascript 得到cookie function getCookie(c_name){ var c_value = document.cookie; var c_start = c_value.indexOf(" " + c_name + "="); if (c_start == -1) { c_start = c_value.indexOf(c_name + "="); } if (c_start == -1) { c_value = null; } else { c_start = c_value.indexOf("=", c_start) + 1; var c_end = c_value.indexOf(";", c_start); if (c_end == -1) { c_end = c_value.length; } c_value = unescape(c_value.substring(c_start,c_end)); } return c_value; } </script> <?php $cookieName = 'waitingfyAdIndex'; if(!isset($_COOKIE[$cookieName])){?> <script type="text/javascript"> setCookie("waitingfyAdIndex",1,1); </script> <?php }?> <script type="text/javascript"> var maxIndex = 3; var adIndex = getCookie("waitingfyAdIndex"); adIndex++; if(adIndex == maxIndex + 1){ adIndex = 1; } setCookie("waitingfyAdIndex",adIndex,1); </script> <?php $single_adIndex = 1; if (isset($_COOKIE[$cookieName])) { $single_adIndex = $_COOKIE[$cookieName]; }?> <?php if($single_adIndex == 1){ //展示广告 1,2,3 ?> <div style="width: 50px;height: 50px; background-color: #ccc"> 1 </div> <?php }else if($single_adIndex == 2){//展示广告 4,5,6 ?> <div style="width: 50px;height: 50px; background-color: #00ff00"> 2 </div> <?php }else if($single_adIndex == 3){//展示广告 7,8,9 ?> <div style="width: 50px;height: 50px; background-color: #0000ff"> 3 </div> <?php }?>
虽然增加广告收入的计划失败了,但也学到了知识,这功能还可以用在用户每次刷新时,展示不同图片,不过我觉得使用随机数也可以达到要求。
http://www.waitingfy.com/?p=734
Tags: wordpress技巧
734