我在一个Cake多页排序过程中设置GA。一个要求是,“URL”推送应该包括一个表示自定义_trackPageview路径的变量,这取决于过程的当前步骤(即_gaq.push(['_trackPageview', '/dsl/shop/availability/$url_addendum']);。
我确实将GA JS代码片段设置为一个蛋糕元素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元素调用留在布局的头部(自然应该是imho),并在不使用_trackEvent的情况下调用自定义_trackPageviews?
有没有一种方法可以将视图名称向上传递到布局,以便以echo $this->element('google_analytics', array('url_addendum' => 'currentview'));的形式调用form?
发布于 2013-05-09 00:37:07
从CakePHP透视图中,您可以在视图模板中访问以下内容:
控制器(例如PostsController)
echo $this->request->params['controller'];操作(例如索引)
echo $this->request->params['action'];视图(例如,默认情况下,索引视图与相应的操作同名)
echo $this->view;URL (例如,帖子/添加)
echo $this->request->url;您可以选择其中哪些值适合您的使用,但我认为没有理由不能将这些值中的一个或多个直接回显到您的JavaScript代码片段中。
我希望这能帮到你!
https://stackoverflow.com/questions/16436207
复制相似问题