Cumplir con la ley de cookies

  • 22 Dic 2015
  • Drupal 7

Ingredientes

Preliminares

Existe una ley en Europa que obliga (aunque nadie lo controle) a todos los sitios web que utilicen cookies (todos) a notificar al visitante. Se pide también que se informe el tipo de cookies (definido en la ley) y que información se está almacenando en ellas. En un solo caso puede cumplirse con el requerimiento mínimo: informar y basta.

Para cumplir con este propósito en un sitio Drupal, agregaremos un block con un texto muy simple y un botón para indicar que se leyó el mensaje.

Procedimiento

1. Agregar la librería cookies

Si todavía no se utiliza esta librería, se deberá agregar al theme usando por ejemplo el hook template_preprocess_page que se deberá agregar al archivo de nuestro theme (nombredeltheme.info)

codigo

2. Agregar el bloque

Como de costumbre, ir a /admin/structure/block y agregar un bloque del siguiente modo:

Block description:

EU cookie law compliance

Block body:

<p>Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, de acuerdo a tus hábitos de navegación.</p>
<p>Si continúas navegando, consideramos que aceptas su uso.</p>
<p><button class="btn btn-default btn-sm" type="button">Cerrar</button></p>

CSS class(es):

eu-cookie-law hidden

Y elegir una ubicación en el theme

3. Un poco de jQuery

Seguramente ya tendremos un archivo javascript con las distintas personalizaciones de nuestro sitio.. si no, habría que agregar uno utilizando un hook o directamente en el archivo .info de nuestro theme. El código jQuery podría ser el siguiente:

(function ($) {

    // eu cookie
    var cookie = "eu-cookie-accept";
    $(".eu-cookie-law .btn").click(function(){
      $(".region-top").slideUp(
        300,
        function(){
          $(".eu-cookie-law").hide();
    
          // expires
          var date = new Date();
          var d = 7;
          date.setTime(date.getTime() + (d * 3600 * 60 * 1000));
    
          // set cookie
          $.cookie(cookie, 1, {expires: date});
        }
      );
    });
    if (parseInt($.cookie(cookie)) != 1) {
      $(".eu-cookie-law").removeClass("hidden");
    }

})(jQuery);

Ajustar la class region-top para que corresponda a la región seleccionada en el punto 2