Magento 检测结帐成功页面

Magento Detect checkout success page

我正在使用 Magento 1.9,并且有一个 PHP 包含文件,我用它来根据页面类型显示 facebook 像素代码。 IE:购物车、结帐、产品详细信息、目录、cms...

我正在查看页面请求模块、控制器、操作等。但是,我似乎无法找到确定它们是否位于 /checkout/success/ 的方法。如果我尝试查看请求 URI,它 returns /checkout/cart/

有没有 class 属性 或方法可以用来确定用户实际上在订单成功页面上?

我最终通过查看当前报价 ID(应该为空)、当前控制器和最后一个订单 ID 完成了它。

function getPageType($page)
{
    $request    = $page->getRequest();
    $controller = $request->getControllerName();
    $session = Mage::getSingleton('checkout/session');

    if($session->getLastOrderId() && !$session->getQuoteId() && $controller == 'cart')
    {
        return 'success';
    }
}

购买完成后,当前报价被清除。但是,由于我们仍在购物车中,这意味着购买已经完成。我检查最后一个订单 ID 只是为了确保有购买。

您可以使用:

if(Mage::app()->getRequest()->getActionName() == 'success'){
// code
}

您也可以使用布局句柄 checkout_onepage_success

在自定义模块的布局中引用它,并在引用的模板文件中包含 facebook 像素代码。

<checkout_onepage_success translate="label">
        <reference name="after_body_start">
            <block type="core/template" template="example/fb/conversion.phtml" />
        </reference>
</checkout_onepage_success>

并且,在 example/fb/conversion.phtml 中,进行必要的处理并包含 facebook 像素代码。

<script>
    fbq('track','Purchase', {
        value: <?php echo xxx ?>,
        currency: '<?php echo xxx ?>',
        content_ids: <?php echo xxx ?>,
        content_type: 'product',
        num_items: <?php echo xxx; ?>
    });
</script>