【问题标题】:How to get the original referrer url on success page?如何在成功页面上获取原始引荐来源网址?
【发布时间】:2014-08-13 09:01:49
【问题描述】:

我有一个代码,它只在成功页面的 head 标记上执行。此代码用于跟踪买家是否来自 Comission Junction。

如果原始推荐人来自佣金连接附属链接,我需要将变量设置为 true,如下所示:

http://www.jdoqocy.com/click-1245-2342423?SID=TrackingTest

有没有简单的方法可以做到这一点?

我在考虑推荐网址,但我猜每次你从一个页面转到另一个页面时变量都会发生变化:添加到购物车 -> 账单地址 -> 送货地址 -> 付款 -> 概览 -> 成功

我的代码是

    public function getCommissionJunctionUdo($orderId) {
            $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
            $udo = array();
            $udo['CID'] = 'XXXX';
            $udo['TYPE'] = 'XXXX';
            $udo['CURRENCY'] = 'USD';
            $udo['OID'] = $orderId;
            $udo['DISCOUNT'] = number_format(abs($order->discount_amount),2);

            $order_coupon_code = $order->coupon_code;
            if(!is_null($order_coupon_code) && !empty($order_coupon_code)) {
                $udo['COUPON'] = $order_coupon_code;
            }

            $udo['PRODUCTLIST'] = self::_getOrderProductsList($order);       

            if(referral url come from CJ) 
{
                $udo['FIRECJ'] = "TRUE";
            }
            else {
                $udo['FIRECJ'] = "FALSE";
            }

            $masterTmsUdo['CJ'] = $udo;
            $json_masterTmsUdo = json_encode($masterTmsUdo);

            return $json_masterTmsUdo;

        }

谢谢

【问题讨论】:

    标签: php magento magento-1.7 php-5.3 magento-1.8


    【解决方案1】:

    您可以观察controller_action_predispatch的活动。
    它为magento中的每个页面调度。
    然后您可以检查$_SERVER['HTTP_REFERER'](或Mage::app()->getRequest()->getServer('HTTP_REFERER'),如果您想“政治正确”)是否符合您的需求。
    如果是这样,则为会话设置一个值。

    Mage::getSingleton('core/session')->setComissionJunctionReferer(true);
    

    然后,在您的结帐页面中,您可以检查该值是否已设置。

    if (Mage::getSingleton('core/session')->getComissionJunctionReferer()) {
        //your magic here
    }
    

    【讨论】:

    • 为什么不用controller_front_init_before,我也发现这个链接看起来很有帮助,你同意这种方法吗?我只需要使用您的代码更改我在 captureReferral 方法中的登录名。 smashingmagazine.com/2013/02/06/…
    • 我不会使用controller_front_init_before,因为当这个事件被调度时,magento 还不知道它是在前端还是后端区域。它也适用于该事件,但您的代码也将在管理部分运行。而且我认为你不需要那个。如果您使用controller_action_predispatch,您可以声明您的观察者仅用于前端区域。
    • 这个例子看起来不错。它可能正是您所需要的。尝试一下,但如果您不想在后端添加不必要的小开销,请更改事件。
    • 如何声明观察者只为前端部分运行?
    • @L.V.. 将config.xml 中的config.xml 标记放在<frontend> 标记下,而不是<global>
    【解决方案2】:

    $_SERVER['HTTP_REFERER'] 会给你推荐页面的 URL(如果有的话)。试试看

    【讨论】:

    • 但是如果我从一个页面移动到另一个页面,那么在我网站内的一个新页面中,它将具有前一个而不是原始引荐来源?
    • 没错,所以尝试将其存储到会话变量中,例如$_SESSION['my_referer'] 在您页面的第一次调用中,您知道它的形式是会员链接
    【解决方案3】:

    LV 试试下面

    Mage::app()->getRequest()->getServer('HTTP_REFERER');
    

    【讨论】:

    • 不就是当前页面的referrer吗?还是整个会话?
    • 那么这不是我需要的,我需要用户在外部站点中链接的当前关联网址。
    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多