我在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'));
?
答案 0 :(得分:1)
从CakePHP的角度来看,您可以在视图模板中访问以下内容:
控制器(例如PostsController)
echo $this->request->params['controller'];
动作(例如索引)
echo $this->request->params['action'];
查看(例如,索引 - 默认情况下的视图与相应的操作具有相同的名称)
echo $this->view;
网址(例如帖子/添加)
echo $this->request->url;
您可以选择哪些适合您的使用,但我认为没有理由不能将这些值中的一个或多个直接回显到您的JavaScript代码段中。
我希望这有帮助!