0

Magento CE 1.9.2.2

Trying to fulfill a client's far-fetched request. Their previous developer created a module which allows the success/order confirmation page to be a CMS page which then references a PHTML file within the template. It was meant to facilitate programmatic order creation at a later point in time. For now, to confirm customer orders, it no longer uses success.phtml but an arbitrary file.

To over-simplify the question: What does it take to echo a customer's most recent order ID on a CMS page? Inside of this CMS page, it's referencing a core/template PHTML file. I'm able to render any static content from that file without issue but I can't echo any order data.

I attempted to make use of the success.phtml code and several other standard variations without success.

<?php $order = Mage::getModel('sales/order')->load(Mage::getSingleton('checkout/session')->getLastOrderId()); ?>

Then just echo $order->getId() somewhere but obviously that does not work out of the box.

How would I proceed to call the most recent order information from a CMS page? Thanks.

0

You can use next code to get last customer order (but it will not work for guest orders):

$orders = Mage::getResourceModel('sales/order_collection')
            ->addAttributeToSelect('*')
            ->joinAttribute('shipping_firstname', 'order_address/firstname', 'shipping_address_id', null, 'left')
            ->joinAttribute('shipping_lastname', 'order_address/lastname', 'shipping_address_id', null, 'left')
            ->addAttributeToFilter('customer_id', Mage::getSingleton('customer/session')->getCustomer()->getId())
            ->addAttributeToFilter('state', array('in' => Mage::getSingleton('sales/order_config')->getVisibleOnFrontStates()))
            ->addAttributeToSort('created_at', 'desc')
            ->setPageSize('1')
            ->load()

            ;

$order = $orders->getFirstItem()
  • 1
    It will be less resource intensive to add a limit to the collection and only fetch 1 record. Your query will result in all the customer order records. – ProxiBlue Apr 11 '16 at 22:27
  • Righty, but as practice tell - most customers have only 1 order )) But anyway - you are right. It was just copypaste from "My Recent Orders" block ) – Neklo.com Apr 12 '16 at 5:58
  • 1
    Most customers have only one order is not a very good assumption. Shoukd assume they have 100's and code accordingly 😆 – ProxiBlue Apr 12 '16 at 6:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.