it-swarm-es.tech

¿Cómo implemento la función de ID de usuario de Google Analytics en Joomla 2.5 para usuarios registrados con PHP?

Mi plantilla de Joomla incluye el archivo analyticstracking.php Con la secuencia de comandos de seguimiento, que ha funcionado muy bien, sin embargo, me gustaría implementar la función de ID de usuario de Google Analytic (para el seguimiento en varios dispositivos) para los usuarios registrados. Aquí está el archivo original de trabajo analyticstracking.php (Esencialmente solo el script de análisis básico):

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).Push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-XXXXXXXX-X', 'auto');
  ga('require', 'linkid', 'linkid.js');
  ga('require', 'displayfeatures');
  ga('send', 'pageview');
</script>

Después de investigar un poco, se me ocurrió la siguiente secuencia de comandos php para intentar generar el ID de usuario a partir del $user->id Incorporado de Joomla, si el usuario ha iniciado sesión:

<?php 
   $user = JFactory::getUser();
   if ($isset($user->id)) {
    $gacode = "ga('set', 'userID', '%s');";
    echo sprintf($gacode, $user->id);
?>

Intenté simplemente insertar eso en el javascript, pero eso bloqueó mi sitio. Entonces, no sé si mi php está mal, o si no puedo agregarlo al script de esa manera, o algo completamente diferente. ¡Por favor ayuda!

1
Sam

oooooo y Terry Carter mencionaron errores en su código. Además de solucionarlos, sería bueno modificar su pregunta para mostrar exactamente cómo se ve su archivo analyticstracking.php final. Algo como esto:

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).Push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-XXXXXXXX-X', 'auto');
  ga('require', 'linkid', 'linkid.js');
  ga('require', 'displayfeatures');
  ga('send', 'pageview');

  <?php 
  $user = JFactory::getUser();
  if ( !$user->isGuest && is_numeric($user->id) )
  {
    echo sprintf("ga('set', 'userId', '%d');", $user->id);
  }
  ?>    
</script>

Ese código tiene mis correcciones sugeridas para que pueda probarlo.

2
Drew G

Su línea $isset Es probablemente donde reside su problema; esa es una declaración variable que está mal.

Es posible que desee hacer esto: is_set ($user->id)

Tampoco es un gran enfoque.

Utilice el método isGuest para devolver un booleano en cuanto a si el usuario ha iniciado sesión en el sitio de esta manera:

$user  = JFactory::getUser();
$guest = $user->isGuest;

if (!$guest){
    $gacode = "foo";
}

Para agregar esto a su script intente lo siguiente:

if(!$guest){
    $gacode = "<script type='text/javascript'>_gaq.Push(['_setCustomVar','User ID','".$user->id."',3]);</script>";
    echo $gacode;
}

Este código debe agregarse después de su JavaScript de análisis. Si el usuario ha iniciado sesión, empujará asincrónicamente la identificación del usuario a Google Analytics utilizando la línea de variable personalizada. Para leer más sobre las variables personalizadas de google analytics, consulte este artículo .

1
Terry Carter