web-dev-qa-db-fra.com

Comment implémenter la fonctionnalité d'identifiant utilisateur Google Analytics dans Joomla 2.5 pour les utilisateurs connectés avec PHP?

Mon modèle Joomla inclut le fichier analyticstracking.php Avec le script de suivi, ce qui a très bien fonctionné, mais j'aimerais implémenter la fonctionnalité ID de Google Analytic (pour le suivi inter-appareils) pour les utilisateurs connectés. Voici le fichier de travail analyticstracking.php D'origine (essentiellement le script d'analyse de base):

<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>

Après quelques recherches, j'ai développé le script php suivant pour essayer de générer l'ID utilisateur à partir de $user->id Intégré de Joomla, si l'utilisateur est connecté:

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

J'ai juste essayé d'insérer cela dans le javascript, mais cela a bloqué mon site. Donc, je ne sais pas si mon php est faux, ou si je ne peux pas l'ajouter au script de cette façon, ou autre chose entièrement? S'il vous plaît aider!

1
Sam

oooooo et Terry Carter ont tous deux mentionné des erreurs dans votre code. En plus de les corriger, il serait bon de modifier votre question pour montrer exactement à quoi ressemble votre fichier final analyticstracking.php. Quelque chose comme ça:

<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>

Ce code contient les corrections suggérées pour que vous puissiez l'essayer.

2
Drew G

Votre ligne $isset Correspond probablement à votre problème; c'est une déclaration de variable qui est fausse.

Vous voudrez peut-être faire ceci: is_set ($user->id)

Ce n'est pas une bonne approche non plus.

Utilisez la méthode isGuest pour renvoyer un booléen indiquant si l'utilisateur est connecté au site de la manière suivante:

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

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

Pour ajouter ceci à votre script, essayez ce qui suit:

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

Ce code doit être ajouté après votre javascript d'analyse. Si l'utilisateur est connecté, il sera ensuite asynchrone. Transférer l'identifiant de l'utilisateur dans Google Analytics à l'aide de la ligne de variable personnalisée. Pour en savoir plus sur les variables d'analyse Google personnalisées, veuillez consulter cet article .

1
Terry Carter