私は Magento のビルトイン Googleanalytics モジュールを使用していますが、これはページ ビューでは正常に機能しますが、コンバージョンでは機能しません。アカウントは Google で正常に設定されていますが、checkout/onepage/success ページに addTrans 部分が追加されていません。
今朝いろいろと調べてみたところ、オブザーバーが「checkout_onepage_controller_success_action」を正しく観察し、実際に実行されていることがわかりました。次のことを行います。
$block = Mage::app()->getFrontController()->getAction()->getLayout()->getBlock('google_analytics');
if ($block) {
$block->setOrderIds($orderIds);
}
いくつかのエコーを行ったところ、ブロックが取得され、注文 ID も正しく設定されました。ただし、ブロック自体で $this->getOrderIds(); をエコーアウトすると、空っぽです。
次に考えたのは、ページで 2 つの GA ブロックを使用している可能性があり、最初のブロックにデータを渡しているが、2 番目のブロックの HTML をエコーしている可能性があるということでしたが、それをチェックする方法がわかりません! Googleanalytics.xml ファイルにはブロックが 1 つしかなく、そのブロック名は他の場所では使用していません。
似たような経験した人いますか?または、ここからどこに行くことができるか考えていますか?
編集: $this->getOrderIds() が配列を返す場合、Ga.php ブロックにはトランザクション コードが含まれますが、これは実行されません。ただし、オブザーバーは $block->setOrderIds($order_ids); を実行しています。注文IDを含む配列を通過しています。したがって、オブザーバーは ID をブロックに渡し、ブロックは ID を受け取ります (setBlockIds のメソッドを設定し、引数をエコーアウトすると、配列が表示されます) が、ブロックが独自のデータにアクセスしようとすると、突然アクセスできなくなります。そこに ($block->getData() はプロパティの配列を返しますが、order_ids プロパティはありません)。
また、注文IDを設定する前にブロックHTMLをエコーしている可能性があると考えたので、それを確認するためにいくつかの変数を追加しましたが、そうではありません-再度取得しようとする前に間違いなくorder_idsを設定していますが、まだ機能していません!
私は完全に困惑しています!私の唯一のアイデアは、Ga.php ブロックを変更して、独自の _data プロパティの代わりに Magento のレジストリを使用することですが、これは実際には良い方法ではありません!