En esta bitácora, se deja elegir al lector si quiere ver o no la publicidad, los enlaces "patrocinados". Realmente no hay ningún misterio detrás, pero, como creo que puede resultar útil para alguien, y además resulta muy sencillo de implementar, voy a relatar cómo se hace en esta bitácora para darle la opción susomentada al lector, cómo puedes hacerlo, por lo tanto, en tu propia bitácora, si quieres.

Como alguno de vosotros ya sabrá, el "sistema" se basa en las "cookies", que es posible guardar en el navegador del lector de la bitácora. Se trata, por tanto, de "poner" una "cookie", o quitarla, simplemente. Para trabajar con "cookies" mediante Javascript, que será nuestro caso, existen diversas soluciones. En este caso no creo que convenga reinventar la rueda, si no te apetece, sino que puede usarse alguna de las soluciones existentes.

En el caso de esta bitácora, he utilizado las funciones Javascript que puedes encontrar en el sitio web QuirksMode.org. Básicamente, se trata de trabajar con el objeto apropiado que "expone" el navegador de turno. Las funciones, en fin, permiten guardar "cookies", recuperar su valor y eliminarlas. Todo de una forma sencilla, es decir, dejamos al autor de dichas funciones el trabajo de tratar con el objeto que expone el navegador, como puedes ver. El siguiente código puedes guardarlo en un archivo "cookies.js".

function createCookie(name,value,days){
  if(days){
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }else{
    var expires = "";
  }
  document.cookie = name+"="+value+expires+"; path=/";
}
 
function readCookie(name){
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++){
    var c = ca[i];
    while(c.charAt(0)==' '){ 
      c = c.substring(1,c.length);
    }
    if(c.indexOf(nameEQ) == 0){
      return c.substring(nameEQ.length,c.length);
    }
  }
  return null;
}
 
function eraseCookie(name){
  createCookie(name,"",-1);
}

Como ves, con las funciones anteriores tenemos suficiente para establecer, leer y borrar "cookies", que es todo lo que necesitamos. En el caso de esta bitácora, he utilizado otro par de funciones Javascript, que puedes guardar en un archivo "functions.js", por ejemplo. Estas funciones sirven para que el usuario pueda aplicar la opción correspondiente. Pero, lo mejor veremos mejor con un ejemplo. Ojo, porque el siguiente incluye código PHP, no es exactamente el mismo que uso en esta bitácora, pero, en esencia podría decirse que así es:

if(!isset($_COOKIE['adsense'])){
  echo '<a title="Ocultar" href="#">Ocultar</a>';
}else{
  echo '<a title="Mostrar" href="#">Mostrar</a>';
}

Observa el código de más arriba. Se usa PHP, en este caso, para averiguar si la "cookie" de nombre "adsense" está definida o no lo está. En caso de no estarlo, se imprime un enlace que el usuario podrá utilizar para ocultar los enlaces "patrocinados". Observa, por tanto, que la opción predeterminada es mostrar los enlaces patrocinados al usuario. Por otro lado, si la "cookie" está establecida, el enlace que se imprime puede usarlo el usuario para volver a mostrar los enlaces patrocinados.

Ya estamos terminando. Faltan el par de funciones Javascript que mencioné anteriormente, y que ahora has podido ver usar: "QuitAdsense()" y "PutAdsense()". Estas funciones, que dije que podían guardarse en un archivo "functions.js", hacen uso a su vez de las funciones para establecer y quitar "cookies" vistas más arriba. Se trata, simplemente, de mostrar al usuario un mensaje, en el cuadro de diálogo estándar para estos menesteres, para que pueda confirmar su elección.

function QuitAdsense(){
  if(confirm('Quieres quitar los enlaces patrocinados de esta web?')){
    createCookie('adsense',1,30);
    document.location.reload(true);
  }
  return true;
}
 
function PutAdsense(){
  if(confirm('Quieres ver los enlaces patrocinados de esta web?')){
    eraseCookie('adsense');
    document.location.reload(true);	
  }
  return true;
}

Como ves, la función "QuitAdsense()", si es que el usuario lo confirma, establecerá una "cookie" de nombre "adsense" y que caducará a los 30 días. A continuación hay una instrucción que acaso llame tu atención, pero, que, funciona como se espera, y utilizo para recargar la página que en ese momento esté viendo el lector de la bitácora, de modo que, automáticamente, por decirlo así, su opción de ver o no los enlaces patrocinados "pueda verse en acción". La función "PutAdsense()", por su parte, y, como puedes imaginar, elimina, tras la confirmación del usuario, la "cookie" previamente establecida, de modo que vuelvan a mostrarse la publicidad en la bitácora.

Y eso es todo. Un poco de JavaScript, un poco de PHP, y ya puedes darle a tus lectores la opción de ver o no ver publicidad en tu sitio web. Me queda la duda de si podría hacerse todo con Javascript, es decir, en lugar de usar PHP para comprobar si la "cookie" que nos interesa está o no definida, utilizar Javascript. Creo que sería perfectamente posible, usando, precisamente, la función "readCookie()" vista más arriba, pero, no lo he llegado a comprobar, me he ido directamente a PHP, puesto que en mi caso no hay mayor problema, simplemente he preferido hacerlo así.

Para terminar, añadiré que, en esta bitácora no utilizo ninguna librería (o biblioteca) Javascript, como suelo hacer. Hablo, cómo no, de jQuery. De haberla usado, habría utilizado el plugin para jQuery Cookie. No por nada. Las funciones vistas en esta entrada para trabajar con "cookies" son bastantes, como ya he dicho, pero, en el caso de usar jQuery, de entrada, si tuviera que añadir algo de Javascript, y pudiera ser en forma de plugins de jQuery, lo haría sin duda alguna.

Y, bueno, creo que está todo dicho. Si acaso demás, porque, me parece que el asunto me ha quedado explicado más complicado de lo que en realidad es. Echa otro vistazo, si ves que tal, y creo que me darás la razón.

Actualización: El objeto "location" de Javascript cuenta con un método "reload", que parece más indicado, y es el que uso ahora.