it-swarm.com.de

Wie implementiere ich die Google Analytics UserID-Funktion in Joomla 2.5 für angemeldete Benutzer mit PHP?

Meine Joomla-Vorlage enthält die Datei analyticstracking.php Mit dem Tracking-Skript. Dies hat sich bewährt. Ich möchte jedoch die UserID-Funktion von Google Analytic (für das geräteübergreifende Tracking) für angemeldete Benutzer implementieren. Hier ist die ursprüngliche, funktionierende analyticstracking.php - Datei (im Wesentlichen nur das grundlegende Analyseskript):

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

Nach einigen Recherchen habe ich das folgende PHP-Skript gefunden, um zu versuchen, die Benutzer-ID aus Joomlas integriertem $user->id Zu generieren, wenn der Benutzer angemeldet ist:

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

Ich habe versucht, das einfach in das Javascript einzufügen, aber das hat meine Seite zum Absturz gebracht. Ich weiß also nicht, ob mein PHP falsch ist oder ob ich es nicht auf diese Weise zum Skript hinzufügen kann oder etwas ganz anderes? Bitte helfen Sie!

1
Sam

oooooo und Terry Carter haben beide Fehler in Ihrem Code erwähnt. Neben der Behebung dieser Probleme ist es hilfreich, Ihre Frage so zu ändern, dass genau angezeigt wird, wie Ihre endgültige analyticstracking.php-Datei aussieht. Etwas wie das:

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

In diesem Code sind meine Korrekturvorschläge enthalten, sodass Sie es ausprobieren können.

2
Drew G

In Ihrer $isset - Zeile liegt wahrscheinlich Ihr Problem. Das ist eine Variablendeklaration, die falsch ist.

Möglicherweise möchten Sie dies tun: is_set ($user->id)

Es ist auch kein guter Ansatz.

Verwenden Sie die isGuest -Methode, um einen booleschen Wert zurückzugeben, der angibt, ob der Benutzer auf der Site wie folgt angemeldet ist:

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

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

Um dies zu Ihrem Skript hinzuzufügen, versuchen Sie Folgendes:

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

Dieser Code sollte nach Ihrem Analytics-Javascript hinzugefügt werden. Wenn der Benutzer angemeldet ist, wird die Benutzer-ID mithilfe der benutzerdefinierten Variablenzeile asynchron an Google Analytics übertragen. Weitere Informationen zu benutzerdefinierten Google Analytics-Variablen finden Sie unter dieser Artikel .

1
Terry Carter