Magento 1.5 では、e コマース トラッキングが多くの Web サイトで機能していないことに気付きました。以下の /core/Mage/GoogleAnalytics/Block/Ga.php コードを確認しました。
protected function _getOrdersTrackingCode()
{
$orderIds = $this->getOrderIds();
if (empty($orderIds) || !is_array($orderIds)) {
return;
}
$collection = Mage::getResourceModel('sales/order_collection')
->addFieldToFilter('entity_id', array('in' => $orderIds))
;
$result = array();
foreach ($collection as $order) {
if ($order->getIsVirtual()) {
$address = $order->getBillingAddress();
} else {
$address = $order->getShippingAddress();
}
$result[] = sprintf("_gaq.push(['_addTrans', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s']);",
$order->getIncrementId(), Mage::app()->getStore()->getFrontendName(), $order->getBaseGrandTotal(),
$order->getBaseTaxAmount(), $order->getBaseShippingAmount(),
$this->jsQuoteEscape($address->getCity()),
$this->jsQuoteEscape($address->getRegion()),
$this->jsQuoteEscape($address->getCountry())
);
foreach ($order->getAllVisibleItems() as $item) {
$result[] = sprintf("_gaq.push(['_addItem', '%s', '%s', '%s', '%s', '%s', '%s']);",
$order->getIncrementId(),
$this->jsQuoteEscape($item->getSku()), $this->jsQuoteEscape($item->getName()),
null, // there is no "category" defined for the order item
$item->getBasePrice(), $item->getQtyOrdered()
);
}
$result[] = "_gaq.push(['_trackTrans']);";
}
return implode("\n", $result);
}
このコードは、成功ページに orderId があるかどうかをテストし、ある場合はトランザクション情報の読み取りに進みます。私が気づいたことは次のとおりです。
$orderIds = $this->getOrderIds();
何があってもデータを返しません。進め方がわかりません。