Как реализовать функцию UserID для Google Analytics в Joomla 2.5 для входа в систему с помощью PHP?

Мой шаблон Joomla содержит файл analyticstracking.php со сценарием отслеживания, который отлично поработал, однако я хотел бы внедрить Google Analytics userID (для отслеживания с помощью нескольких устройств) для зарегистрированных пользователей. Вот оригинальный, рабочий analyticstracking.php файл (по существу, только основной скрипт аналитики):

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

После некоторых исследований я придумал следующий скрипт php, чтобы попытаться сгенерировать идентификатор пользователя из встроенного кода Joomla $user->id, если пользователь вошел в систему:

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

Я попробовал просто вставить это в javascript, но это разбило мой сайт. Поэтому я не знаю, ошибочно ли мой php, или если я не могу добавить его в скрипт таким образом или что-то еще полностью? Пожалуйста, помогите!

1 голос | спросил Sam 5 PMpWed, 05 Apr 2017 21:17:33 +030017Wednesday 2017, 21:17:33

2 ответа


3

oooooo и Терри Картер упомянули ошибки в вашем коде. Кроме того, чтобы исправить это, было бы полезно изменить свой вопрос, чтобы показать, как выглядит ваш окончательный файл analytticstracking.php. Что-то вроде этого:

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

В этом коде есть мои предложенные исправления, чтобы вы могли попробовать.

ответил Drew G 6 PMpThu, 06 Apr 2017 21:13:31 +030013Thursday 2017, 21:13:31
2

Ваша строка $isset, вероятно, относится к вашей проблеме; это неверное объявление переменной.

Вы можете сделать это: is_set ($user->id)

Это не очень хороший подход.

Используйте метод isGuest для возврата boolean относительно того, зарегистрирован ли пользователь в сайт так:

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

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

Чтобы добавить это в свой скрипт, попробуйте следующее:

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

Этот код должен быть добавлен после javascript вашей аналитики. Если пользователь вошел в систему, он будет асинхронно вводить идентификатор пользователя в Google Analytics с использованием настраиваемой переменной. Чтобы узнать больше о пользовательских переменных аналитики Google, см. в этой статье .

ответил Terry Carter 6 AMpThu, 06 Apr 2017 08:09:21 +030009Thursday 2017, 08:09:21

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132