HaCos Posted September 9, 2014 Share Posted September 9, 2014 Hello, I mentioned that by default PS shows cart_summary only in 1st & last step of checkout process. I would like to show cart_summary in all steps. I tried to just copy the code between Shopping Cart Start & End tag from file shopping-cart.tpl in the rest steps (eg order-address.tpl) but this revealed the table without the products name & prices. Any idea why this is caused? Link to comment Share on other sites More sharing options...
vekia Posted September 9, 2014 Share Posted September 9, 2014 it's because only shopping cart step has got products variable you have to pass it to smarty array also to other parts of shopping cart (it's necessary to modify contorllers) what is your ps verison? Link to comment Share on other sites More sharing options...
HaCos Posted September 9, 2014 Author Share Posted September 9, 2014 (edited) it's because only shopping cart step has got products variable you have to pass it to smarty array also to other parts of shopping cart (it's necessary to modify contorllers) what is your ps verison? I am working on 1.6.0.8Can I somehow get to know which controller or even better which classes of a controller is being loaded when a page is loaded? This way I could try to share product variables on the right classes in order to render correctly on other steps. Edited September 9, 2014 by HaCos (see edit history) Link to comment Share on other sites More sharing options...
vekia Posted September 9, 2014 Share Posted September 9, 2014 it's a OrderController.php located in controllers/front/ directory you can find there SWITCH function with several case values related to order steps to each of them try to add this: $this->_assignSummaryInformations(); 1 Link to comment Share on other sites More sharing options...
photographer Posted September 10, 2014 Share Posted September 10, 2014 DID IT WORK? I WONDER IF THESE CASE VALUES CAN ALSO MODIFY THE URL, AS TO SOLVE OTHER ISSUES POSTED HERE: http://www.prestashop.com/forums/topic/318119-checkout-urls-google-analytics-funnels/?do=findComment&comment=1609395 Link to comment Share on other sites More sharing options...
HaCos Posted September 11, 2014 Author Share Posted September 11, 2014 it's a OrderController.php located in controllers/front/ directory you can find there SWITCH function with several case values related to order steps to each of them try to add this: $this->_assignSummaryInformations(); Worked like a charm! Thanks! Link to comment Share on other sites More sharing options...
vekia Posted September 11, 2014 Share Posted September 11, 2014 Worked like a charm! Thanks! glad to hear :-) i marked topic title as solved with regards, milos Link to comment Share on other sites More sharing options...
HaCos Posted October 2, 2014 Author Share Posted October 2, 2014 When a user selects to pay with "COD" or "Pay with Bank Wire", there is an extra step in the checkout process, where client is asked to validate the order. This step seems to be part of the module ( url looks like : .../module/bankwire/payment ) and doesnt work with the solution mentioned above. How can i add Cart summary in the module as well or skip the validation step? Although this thread is mentioned as solved i think its better to be resolved here instead of a new thread, since is part of the checkout process. Regards, C Link to comment Share on other sites More sharing options...
marissa_bari Posted October 13, 2014 Share Posted October 13, 2014 Hello vekia, can u help me? this is code of ordercontroller.php <?php /* * 2007-2011 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2011 PrestaShop SA * @version Release: $Revision: 6823 $ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ ControllerFactory::includeController('ParentOrderController'); class OrderControllerCore extends ParentOrderController { public $step; public function init() { parent::init(); $this->step = (int)(Tools::getValue('step')); if (!$this->nbProducts) $this->step = -1; } public function preProcess() { global $isVirtualCart, $orderTotal; parent::preProcess(); /* If some products have disappear */ if (!self::$cart->checkQuantities()) { $this->step = 0; $this->errors[] = Tools::displayError('An item in your cart is no longer available for this quantity, you cannot proceed with your order.'); } /* Check minimal amount */ $currency = Currency::getCurrency((int)self::$cart->id_currency); $orderTotal = self::$cart->getOrderTotal(); $minimalPurchase = Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency); if (self::$cart->getOrderTotal(false) < $minimalPurchase && $this->step != -1) { $this->step = 0; $this->errors[] = Tools::displayError('A minimum purchase total of').' '.Tools::displayPrice($minimalPurchase, $currency). ' '.Tools::displayError('is required in order to validate your order.'); } if (!self::$cookie->isLogged(true) AND in_array($this->step, array(1, 2, 3))) Tools::redirect('authentication.php?back='.urlencode('order.php?step='.$this->step)); if ($this->nbProducts) self::$smarty->assign('virtual_cart', $isVirtualCart); } public function displayHeader() { if (!Tools::getValue('ajax')) parent::displayHeader(); } public function process() { parent::process(); /* 4 steps to the order */ switch ((int)$this->step) { case -1; self::$smarty->assign('empty', 1); break; case 1: $this->_assignAddress(); break; case 2: if(Tools::isSubmit('processAddress')) $this->processAddress(); $this->autoStep(); $this->_assignCarrier(); break; case 3: //Test that the conditions (so active) were accepted by the customer $cgv = Tools::getValue('cgv'); if (Configuration::get('PS_CONDITIONS') AND (!Validate::isBool($cgv))) Tools::redirect('order.php?step=2'); if(Tools::isSubmit('processCarrier')) $this->processCarrier(); $this->autoStep(); /* Bypass payment step if total is 0 */ if (($id_order = $this->_checkFreeOrder()) AND $id_order) { if (self::$cookie->is_guest) { $email = self::$cookie->email; self::$cookie->logout(); // If guest we clear the cookie for security reason Tools::redirect('guest-tracking.php?id_order='.(int)$id_order.'&email='.urlencode($email)); } else Tools::redirect('history.php'); } $this->_assignPayment(); break; default: $this->_assignSummaryInformations(); break; } } private function processAddressFormat() { $addressDelivery = new Address((int)(self::$cart->id_address_delivery)); $addressInvoice = new Address((int)(self::$cart->id_address_invoice)); $invoiceAddressFields = AddressFormat::getOrderedAddressFields($addressInvoice->id_country); $deliveryAddressFields = AddressFormat::getOrderedAddressFields($addressDelivery->id_country); self::$smarty->assign(array( 'inv_adr_fields' => $invoiceAddressFields, 'dlv_adr_fields' => $deliveryAddressFields)); } public function displayContent() { global $currency; parent::displayContent(); self::$smarty->assign(array( 'currencySign' => $currency->sign, 'currencyRate' => $currency->conversion_rate, 'currencyFormat' => $currency->format, 'currencyBlank' => $currency->blank, )); switch ((int)$this->step) { case -1: self::$smarty->display(_PS_THEME_DIR_.'shopping-cart.tpl'); break; case 1: $this->processAddressFormat(); self::$smarty->display(_PS_THEME_DIR_.'order-address.tpl'); break; case 2: self::$smarty->display(_PS_THEME_DIR_.'order-carrier.tpl'); break; case 3: self::$smarty->display(_PS_THEME_DIR_.'order-payment.tpl'); break; default: self::$smarty->display(_PS_THEME_DIR_.'shopping-cart.tpl'); break; } } public function displayFooter() { if (!Tools::getValue('ajax')) parent::displayFooter(); } /* Order process controller */ public function autoStep() { global $isVirtualCart; if ($this->step >= 2 AND (!self::$cart->id_address_delivery OR !self::$cart->id_address_invoice)) Tools::redirect('order.php?step=1'); $delivery = new Address((int)(self::$cart->id_address_delivery)); $invoice = new Address((int)(self::$cart->id_address_invoice)); if ($delivery->deleted OR $invoice->deleted) { if ($delivery->deleted) unset(self::$cart->id_address_delivery); if ($invoice->deleted) unset(self::$cart->id_address_invoice); Tools::redirect('order.php?step=1'); } elseif ($this->step >= 3 AND !self::$cart->id_carrier AND !$isVirtualCart) Tools::redirect('order.php?step=2'); } /* * Manage address */ public function processAddress() { if (!Tools::isSubmit('id_address_delivery') OR !Address::isCountryActiveById((int)Tools::getValue('id_address_delivery'))) $this->errors[] = Tools::displayError('This address is not in a valid area.'); else { self::$cart->id_address_delivery = (int)(Tools::getValue('id_address_delivery')); self::$cart->id_address_invoice = Tools::isSubmit('same') ? self::$cart->id_address_delivery : (int)(Tools::getValue('id_address_invoice')); if (!self::$cart->update()) $this->errors[] = Tools::displayError('An error occurred while updating your cart.'); if (Tools::isSubmit('message')) $this->_updateMessage(Tools::getValue('message')); } if (sizeof($this->errors)) { if (Tools::getValue('ajax')) die('{"hasError" : true, "errors" : ["'.implode('\',\'', $this->errors).'"]}'); $this->step = 1; } if (Tools::getValue('ajax')) die(true); } /* Carrier step */ protected function processCarrier() { global $orderTotal; parent::_processCarrier(); if (sizeof($this->errors)) { self::$smarty->assign('errors', $this->errors); $this->_assignCarrier(); $this->step = 2; $this->displayContent(); include(dirname(__FILE__).'/../footer.php'); exit; } $orderTotal = self::$cart->getOrderTotal(); } /* Address step */ protected function _assignAddress() { parent::_assignAddress(); self::$smarty->assign('cart', self::$cart); if (self::$cookie->is_guest) Tools::redirect('order.php?step=2'); } /* Carrier step */ protected function _assignCarrier() { global $defaultCountry; if (isset(self::$cookie->id_customer)) $customer = new Customer((int)(self::$cookie->id_customer)); else die(Tools::displayError('Fatal error: No customer')); // Assign carrier parent::_assignCarrier(); // Assign wrapping and TOS $this->_assignWrappingAndTOS(); self::$smarty->assign('is_guest' ,(isset(self::$cookie->is_guest) ? self::$cookie->is_guest : 0)); } /* Payment step */ protected function _assignPayment() { global $orderTotal; // Redirect instead of displaying payment modules if any module are grefted on Hook::backBeforePayment('order.php?step=3'); /* We may need to display an order summary */ self::$smarty->assign(self::$cart->getSummaryDetails()); self::$smarty->assign(array( 'total_price' => (float)($orderTotal), 'taxes_enabled' => (int)(Configuration::get('PS_TAX')) )); self::$cookie->checkedTOS = '1'; parent::_assignPayment(); } } where i enter your suggestion? ($this->_assignSummaryInformations() help me please? Link to comment Share on other sites More sharing options...
akps1234 Posted February 22, 2016 Share Posted February 22, 2016 Hi, I've just tried to apply this method to OrderController.php in PS 1.6.1.4. As suggested by Milos, I added one line $this->_assignSummaryInformations(); for each set of case .... break; steps. It seems isn't working. Is it possible to paste the SWITCH portion of the OrderController.php with these changes? Thank you, Alex 1 Link to comment Share on other sites More sharing options...
srikumar Posted September 5, 2018 Share Posted September 5, 2018 you have already solve this problem like $this->_assignSummaryInformations(); but i need to diplay in authentication.tpl page but in switch case there is not available , so please help me to solve this problem , Link to comment Share on other sites More sharing options...
srikumar Posted September 7, 2018 Share Posted September 7, 2018 On 9/5/2018 at 5:08 PM, srikumar said: vekia you have already solve this problem like $this->_assignSummaryInformations(); but i need to diplay in authentication.tpl page but in switch case there is not available , so please help me to solve this problem , Link to comment Share on other sites More sharing options...
lipo999 Posted May 29, 2019 Share Posted May 29, 2019 Hello, you put: $this->_assignSummaryInformations(); just before each step of cart. Then I had put in each step (tpl file) of cart, code from cart summary. Everything works. BUT How to do it for Sign in step? Thank you Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now