如何将当前视图名称传递到我的Google Analytics元素?

时间:2013-05-08 08:42:58

标签: cakephp google-analytics

我在Cake多页订购流程中设置了GA。一个要求是,“_trackPageview”推送应该包含一个表示自定义URL路径的变量,具体取决于流程的当前步骤(即_gaq.push(['_trackPageview', '/dsl/shop/availability/$url_addendum']);

我确实将GA JS片段设置为Cake元素google_analytics.ctp:

<?php
$gaCode = Configure::read('xxx.ga.tracking_code');

if (!isset($url_addendum))
    $url_addendum = '';

if ($gaCode) {
$googleAnalytics = <<<EOD
<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', '$gaCode']);
  _gaq.push(['_trackPageview', '/xxx/shop/availability/$url_addendum']);
  _gaq.push(['_gat._anonymizeIp']);
  _gaq.push(['_setDomainName', 'xxx']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
EOD;
echo $googleAnalytics;
}
?>

使用布局shop.ctp显示订单流程,其中我将echo $this->element('google_analytics');添加到标题部分。这当然很好。

我现在的问题是,我需要使用我的自定义$ url_addendum参数触发_trackPageView,单独按订单流程的每个视图/步骤。但是,不会产生页面视图的重复,也不会在每个视图的主体内调用整个GA元素。

所以我想问题是:有没有办法让GA-element调用放在布局的头部(它应该是自然的,imho)并调用自定义_trackPageviews而不必使用_trackEvent?

有没有办法将视图名称传递给布局,以便以形式唤起拟合调用 echo $this->element('google_analytics', array('url_addendum' => 'currentview'));

1 个答案:

答案 0 :(得分:1)

从CakePHP的角度来看,您可以在视图模板中访问以下内容:

控制器(例如PostsController)

echo $this->request->params['controller'];

动作(例如索引)

echo $this->request->params['action'];

查看(例如,索引 - 默认情况下的视图与相应的操作具有相同的名称)

echo $this->view;

网址(例如帖子/添加)

echo $this->request->url;

您可以选择哪些适合您的使用,但我认为没有理由不能将这些值中的一个或多个直接回显到您的JavaScript代码段中。

我希望这有帮助!