Php 如何在成功页面上获取原始推荐人url?

Php 如何在成功页面上获取原始推荐人url?,php,magento,magento-1.7,php-5.3,magento-1.8,Php,Magento,Magento 1.7,Php 5.3,Magento 1.8,我有一个代码,它只在成功页面的head标签上执行。此代码用于跟踪买家是否来自佣金交接处 我需要将一个变量设置为true,如果原始推荐人来自commission junction附属链接,如下所示: 有没有一个简单的方法可以做到这一点 我在考虑推荐url,但我猜每次你从一个页面转到另一个页面时,变量都会发生变化:添加到购物车->账单地址->配送地址->付款->概览->成功 我的代码是 public function getCommissionJunctionUdo($orderId) {

我有一个代码,它只在成功页面的head标签上执行。此代码用于跟踪买家是否来自佣金交接处

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

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

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

我的代码是

    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;

        }

谢谢

$\u服务器['HTTP\u REFERER']
将为您提供REFERER页面的URL(如果存在)。试试看,下面试试

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

您可以观察事件
controller\u action\u predispatch

它将为magento中的每个页面发送。
然后,您可以检查
$\u服务器['HTTP\u REFERER']
(或者
Mage::app()->getRequest()->getServer('HTTP\u REFERER')
,如果您希望“政治正确”)是否符合您的需要。
如果是,则为会话设置一个值

Mage::getSingleton('core/session')->setComissionJunctionReferer(true);
然后,在您的签出页面中,您可以检查该值是否已设置

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

但是如果我从一个页面移动到另一个页面,那么在我网站的新页面中,它将拥有上一个页面,而不是原始的引用人?没错,所以尝试将其存储到会话变量中,例如,在第一次调用页面时,你知道它的形式是附属链接,它不是当前页面的引用人吗?或者整个会话?那么这不是我需要的,我需要的是用户在外部站点链接的当前辅助url。为什么控制器之前没有链接呢?我发现这个链接似乎非常有用,你同意这种方法吗?我只需要用您的代码更改captureReferral方法中的登录名。我不会在之前使用
controller\u front\u init\u
,因为在调度此事件时,magento还不知道它是在前端还是后端区域。它也将与该事件一起工作,但您的代码也将为管理部分运行。我认为你不需要这样。如果您使用
controller\u action\u predispatch
,您可以声明您的观察者仅用于前端区域。示例看起来不错。这可能正是你所需要的。尝试一下,但如果不想在后端添加不必要的小开销,请更改事件。我如何声明观察器仅为前端部分运行?@L.V.。将
标记放在
config.xml
中的
标记下,而不是
标记下。