Magento – How to include the checkout progress on the Paypal express review page

blockscheckoutlayoutonepage-checkoutpaypal-express

Okay I've broken this down into steps and you can see where I am stuck:

Step 1 – change column number

The PayPal express review page (our page that PayPal sends the buyer back to in order to review and finally submit their order) is a one column page. Of course we can change the number of columns by overriding the layout in a custom module xml file:

<paypal_express_review>
   <!-- maybe other references here -->
   <reference name="root">
      <action method="setTemplate"><template>page/2columns-right.phtml</template></action>
   </reference>
   <!-- maybe other references here -->
</paypal_express_review>

Step 2 – remove code restricting right-hand column content

Now the right hand column will be present but will be blank – this is because of the following line in app/design/frontend/base/default/layout/paypal.xml – which we remove:

<remove name="right"/>

Step 3 – add content in xml file

Clearing the cache and refreshing the page will show the default right-hand column content. So if from there we add the following lines (borrowed from app/design/frontend/base/default/layout/checkout.xml) into the custom module xml file we once again come up with a blank.

<reference name="right">
    <action method="unsetChildren"></action>
    <block type="page/html_wrapper" name="checkout.progress.wrapper" translate="label">
        <label>Checkout Progress Wrapper</label>
        <action method="setElementId"><value>checkout-progress-wrapper</value></action>
        <block type="checkout/onepage_progress" name="checkout.progress" before="-" template="checkout/onepage/progress.phtml"/>
    </block>
</reference>

I know that this is the right method to get the content in that column as I can do it with a custom template, e.g.

<reference name="right">
    <action method="unsetChildren"></action>
    <block type="page/html" name="custom" template="custom_module/custom.phtml" />
</reference>

Little unsure about the block type there. Also I am aware that there is the following block in app/design/frontend/base/default/layout/checkout.xml that isn't being used:

<block type="checkout/onepage_progress" name="root" output="toHtml" template="checkout/onepage/progress.phtml">
    <block type="checkout/onepage_payment_info" name="payment_info">
        <action method="setInfoTemplate"><method></method><template></template></action>
    </block>
</block>

As you can see my knowledge on this is pretty restricted – due more to a lack of documentation than desire (this site was interesting though).

I must stress that this is by no means unachievable so if anyone has suggestions or alas the sought after solution or any insight at all your post is worthy and most welcome. Many thanks

Best Answer

Yes it is possible.

enter image description here

This is what you will need to achieve it.

In your module.xml remove all references <remove name="right" /> from the paypal_express_review handle and update the template the same as you have done in step 1 and 2.

Next you can add the checkout.progress wrapper block into the right reference. This block can be found in app/design/frontend/base/default/layout/checkout.xml

<reference name="right">
            <action method="unsetChildren"></action>
            <block type="page/html_wrapper" name="checkout.progress.wrapper" translate="label">
                <label>Checkout Progress Wrapper</label>
                <action method="setElementId"><value>checkout-progress-wrapper</value></action>
                <block type="checkout/onepage_progress" name="checkout.progress" before="-" template="checkout/onepage/progress.phtml">
                    <block type="checkout/onepage_progress" name="billing.progress" template="checkout/onepage/progress/billing.phtml"></block>
                    <block type="checkout/onepage_progress" name="shipping.progress" template="checkout/onepage/progress/shipping.phtml"></block>
                    <block type="checkout/onepage_progress" name="shippingmethod.progress" template="checkout/onepage/progress/shipping_method.phtml"></block>
                    <block type="checkout/onepage_progress" name="payment.progress" template="checkout/onepage/progress/payment.phtml"></block>
                </block>
            </block>
        </reference>

Once you get to the paypal/express/review/ page you should see that there is a blank column? Why isn't you block showing up? If you inspect the page in the right column you should see opactity: 0;. Update your styles to be opacity:1; and the block should be there.

enter image description here

The only issue you may have is getting the change links to work as they are expecting the container to be there already. If not you could look at creating your own template for progress and removing the links. Hope this helps :D