0

我在 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;
}
?>

echo $this->element('google_analytics');订单流程使用我添加到标题部分的布局 shop.ctp 显示。这当然工作正常。

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

所以我想问题是:有没有办法将 GA 元素调用留在布局的头部(它应该是自然的,恕我直言)并调用自定义 _trackPageviews 而不必使用 _trackEvent ?

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

4

1 回答 1

1

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

控制器(例如 PostsController)

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

动作(例如索引)

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

视图(例如 index - 默认情况下视图与相应的操作具有相同的名称)

echo $this->view;

URL(例如帖子/添加)

echo $this->request->url;

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

我希望这有帮助!

于 2013-05-08T16:37:06.920 回答