php - 检查 magento url 中的 UTM 标签

标签 php magento google-analytics referrer utm

我为 magento 编写自定义代码来跟踪 url 中的 utm 标签,如果下订单,我需要将其保存到带有引荐来源网址的数据库中。那是我的代码:

        <controller_action_predispatch>
            <observers>
                <refersource>
                    <type>singleton</type>
                    <class>refersource/observer</class>
                    <method>controllerActionPredispatch</method>
                </refersource>
            </observers>
        </controller_action_predispatch>

在这个观察者中,我将检查 url 中是否存在 utm 标签,如果存在,我将标签和引用 url 保存到客户 session 。
protected $_allowed_tags = array('utm_source','utm_medium','utm_term','utm_content','utm_campaign','refer_url');

public function controllerActionPredispatch($observer)
{

    $params = Mage::app()->getRequest()->getParams();
    $reffer_url = Mage::helper('core/http')->getHttpReferer();

    if($reffer_url && strstr($reffer_url,'mysite') === false){  
        $utm_exist = false;
        if ((isset($params['utm_source']) && $params['utm_source']) ||
            (isset($params['utm_medium']) && $params['utm_medium']) ||
            (isset($params['utm_content']) && $params['utm_content']) ||
            (isset($params['utm_campaign']) && $params['utm_campaign'])
        ) {
            $utm_exist = true;
        }

        if($utm_exist){
            $params['refer_url'] = $reffer_url;
            Mage::getSingleton('customer/session')->setReferrerData(serialize($params));
        }           
    }
}

下一个观察者检查是否下订单并将数据保存到订单。
       <sales_order_place_after>
            <observers>
                <refersource>
                    <type>singleton</type>
                    <class>refersource/observer</class>
                    <method>salesOrderPlaceAfter</method>
                </refersource>
            </observers>
        </sales_order_place_after>

public function salesOrderPlaceAfter($observer)
{
    $referrer_data = unserialize(Mage::getSingleton('customer/session')->getReferrerData());

    if($referrer_data){
        $order = $observer->getEvent()->getOrder();
        if($referrer_data && is_array($referrer_data)){
            foreach($referrer_data as $tag=>$value){
                if(in_array($tag,$this->_allowed_tags)){
                    $order->setData($tag,$value);
                }
            }
            $order->save();
        }
        Mage::getSingleton('customer/session')->unsReferrerData();
    }
}

已在 sales_flat_order 中创建需要的文件。一切正常,但有一些问题。当我们在谷歌分析中看到时,我们看到了大约 50 个使用这个 utm 标签的订单的例子,并看到了引荐来源网址。但在数据库中,我们只看到 2-4 个带有 utm 标签信息的订单。

谁能解释为什么会这样?谢谢你!

最佳答案

嗨,我们正在使用此扩展程序来存储信息:

http://www.magentocommerce.com/magento-connect/acquisition-source-grabber.html

如果你愿意,你可以编辑扩展。我们对存储操作系统进行了一些修改,浏览器很容易......这个扩展为你工作。

关于php - 检查 magento url 中的 UTM 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26555291/

相关文章:

php - 为什么 Magento 尝试调用 Mage 命名空间而不是我的自定义命名空间?

google-analytics - 是否可以在bigquery中获取谷歌分析事件时间戳?

php - 如何使用递归查询 MySQL 创建层次树结构以及与另一个表的内连接操作

php - 选择查询不正确

php - 检查字符串是否是 PHP 中的电子邮件地址

apache - [proxy_fcgi :error](70007)The timeout specified has expired

php - 在另一个 PHP 页面中将变量从一个表传递到另一个表

php - Magento:可以从 shell ssh 运行导出配置文件

ios - 谷歌分析 iOS : how does it track users?

google-analytics - Google Analytics API的所有时间总观看次数?