我正在使用 Magento 内置的 Googleanalytics 模块,该模块适用于页面浏览量,但不适用于转换。该帐户在 Google 上设置得很好,但它没有在结帐/单页/成功页面中添加 addTrans 部分。
今天早上我做了很多挖掘,发现观察者确实正确地观察到了“checkout_onepage_controller_success_action”,并且确实运行了。它执行以下操作:
$block = Mage::app()->getFrontController()->getAction()->getLayout()->getBlock('google_analytics');
if ($block) {
$block->setOrderIds($orderIds);
}
我做了一些回显,它确实检索了块,它还正确设置了订单 ID。但是,在块本身中,如果我回显 $this->getOrderIds(); 它是空的。
我的下一个想法是,也许它可能在页面上使用了两个 GA 块,并且可能将数据传递给第一个,但回显了第二个的 HTML,但我不知道如何开始检查!Googleanalytics.xml 文件中只有一个块,我不会在其他任何地方使用该块名称!
有没有人经历过类似的?或者知道我可以从这里去哪里吗?
编辑:如果 $this->getOrderIds() 返回一个数组,则 Ga.php 块包含事务代码,但它没有这样做。然而,观察者正在做 $block->setOrderIds($order_ids); 它正在通过一个包含订单 ID 的数组。所以观察者将 ids 传递给块,并且块正在接收它们(设置 setBlockIds 的方法并回显参数,确实显示了数组),但是当块尝试访问自己的数据时,它突然不那里($block->getData() 返回一个属性数组,但没有 order_ids 属性)。
我还想可能是它在设置订单 ID 之前回显了块 HTML,所以我添加了一些变量来检查它,但事实并非如此 - 它肯定会在尝试再次获取它们之前设置 order_ids,但它仍然无法正常工作!
我完全被难住了!我现在唯一的想法是修改 Ga.php 块以使用 Magento 的注册表而不是它自己的 _data 属性,这真的不是一个好方法!