Las páginas más visitadas usando Google Analytics Api

June 18, 2021

¿Cuántos hemos visto el famoso bloque llamado "Lo más visto", casi todos cierto?

En este pequeño post, hablaremos justamente de como obtener las direcciones más vistas de nuestro sitio, basándonos en los reportes generados por Google Analytics.

Lo primero es tener instalado el módulo de Google Analytics y haber colocado nuestro ID en: http://nuestraweb.com/admin/config/system/googleanalytics

Una vez listos, procedemos a descargar la api de google analytics php, lo recomendable es crearnos un nuevo módulo y colocar el archivo gapi.class dentro del mismo.

Ahora procedemos a modificar nuestro archivo .module, en el siguiente caso, damos por entendido que nuestras URL, siguen este formato: (http://nuestraweb.com/noticia/titulo_de_noticia ; http://nuestraweb.com/video/titulo_de_video), donde noticia y vídeo son tipos de contenido.

 
/**
* Helper function to get the most views from google analytics.
*/
function the_links_most_viewed($content_type){
  // Incluimos el api.
  module_load_include('inc', 'nuestro_modulo', 'gapi.class');
  // Colocamos nuestras credenciales.
  $googleanalytics_token = 'token_id';
  $report_id = 'report_id';
  $ga = new gapi(null,null,$googleanalytics_token);

  // Si nuestro objetivo es ver los resultados filtrados por el tipo de nodo (sea noticia o sea vídeo) agregamos el siguiente filtro, sino definirla como null.
  $filter = 'pagePath=~/\b' . $content_type . '\b/';
  // Definimos las métricas y dimensiones a buscar.
  $metrics = array('uniquePageviews');
  $dimensions = array('pagePath');
  // Definimos la manera en que se ordenarán.
  $sort_metric = '-uniquePageviews';
  // Definimos una fecha inicial y final.
  $start_date = date('Y-m-d', strtotime('-5 days'));
  $end_date = date('Y-m-d');
  // Definimos el índice inicial.
  $start_index = 1;
  // Cantidad máxima de resultados a obtener.
  $max_results = 5;
  // Obtenemos el resultado
  $the_most_popular = $ga->requestReportData($report_id, $dimensions, $metrics, $sort_metric, $filter, $start_date, $end_date, $start_index, $max_results);

  foreach($the_most_popular as $item){
    $dimensions = $item->getDimesions();
    // Convertimos la URL a la dirección normal, esto es node/$nid
    $node_patch = drupal_get_normal_path(substr($dimensions['pagePath'], 1));
    // Obtenemos el nid.
    $nid = explode("/", $node_patch);
    if(is_numeric($nid[1])){
      $nodes[] = $nid[1];
    }
  }
  return ($nodes)? $nodes : "";
}

Conclusión

Y de esta manera obtenemos las paginas más visitadas, filtrando por el tipo de contenido deseado.