Sam Posted November 12, 2024 at 01:59 PM Share Posted November 12, 2024 at 01:59 PM ocStore 2.3, корзина Simple. Хотел вывести сообщение в корзине "До бесплатной доставки осталось купить на: _____ рублей." Подскажите, где я ошибаюсь. В контроллере simplecheckout_cart.php прописываю в public function index $cart_total = $this->cart->getSubTotal(); $data['cart_total'] = $cart_total; Соответственно в шаблоне корзины simplecheckout_cart.tpl <?php if ($cart_total < 4000): ?> <div style="color: #cc0000; font-size: 16px; font-weight: bold; margin-top: 10px; padding: 10px; border: 1px solid #cc0000; background-color: #f8d7da; border-radius: 5px; text-align: right;"> До бесплатной доставки осталось купить на: <strong><?php echo number_format(4000 - $cart_total, 2, '.', ' '); ?> рублей</strong> </div> <?php endif; ?> В итоге, у меня считается 4000 минус количество товара в корзине. А должно быть 4000 минус предварительная стоимость. Пробовал через getTotal, то же самое. 0 Quote Link to comment Share on other sites More sharing options...
AlexDW Posted November 12, 2024 at 02:47 PM Share Posted November 12, 2024 at 02:47 PM проверьте что у вас с $data['cart_total'] пробуйте другое название переменной, возможно перезаписывается 0 Quote модули для удобной работы с Opencart Link to comment Share on other sites More sharing options...
Solution Tesloz Posted November 13, 2024 at 05:58 AM Solution Share Posted November 13, 2024 at 05:58 AM Таки там надо присваивать в (если не ошибаюсь) $this->_templateData ну и название "cart_total" смени т.к. оно уже используется Спойлер if (strpos($text_items, '{quantity}') !== false || strpos($text_items, '{total}') !== false) { $find = array( '{quantity}', '{total}' ); $replace = array( '{quantity}' => $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), '{total}' => $this->simplecheckout->formatCurrency($total) ); $this->_templateData['cart_total'] = str_replace($find, $replace, $text_items); } else { $this->_templateData['cart_total'] = sprintf($text_items, $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->simplecheckout->formatCurrency($total)); } 1 Quote Link to comment Share on other sites More sharing options...
Sam Posted November 13, 2024 at 09:44 AM Author Share Posted November 13, 2024 at 09:44 AM В 12.11.2024 в 17:47, AlexDW сказал: проверьте что у вас с $data['cart_total'] пробуйте другое название переменной, возможно перезаписывается Попробовал изменить название, сейчас расчет вообще перестал работать. Добавил в код контроллера логирование: $total_cart_value = $this->cart->getSubTotal(); $this->_templateData['total_cart_value'] = $total_cart_value; $this->log->write('Data passed to template: ' . json_encode($this->_templateData)); $this->response->setOutput($this->load->view('checkout/simplecheckout_cart', $this->_templateData)); В логах значение subtotal передается верно: Calculated Total Cart Value (SubTotal): 1190 Data passed to template: {"total_cart_value":1190} Но ругается на переменные в шаблоне, хотя контроллером они передаются: Спойлер PHP Notice: Undefined variable: hide in PHP Notice: Undefined variable: has_error in PHP Notice: Undefined variable: display_header in PHP Notice: Undefined variable: attention in PHP Notice: Undefined variable: error_warning in PHP Notice: Undefined variable: column_image in PHP Notice: Undefined variable: column_name in PHP Notice: Undefined variable: column_model in PHP Notice: Undefined variable: column_quantity in PHP Notice: Undefined variable: column_price in PHP Notice: Undefined variable: column_total in PHP Notice: Undefined variable: products in PHP Warning: Invalid argument supplied for foreach() in PHP Notice: Undefined variable: vouchers in PHP Warning: Invalid argument supplied for foreach() in PHP Notice: Undefined variable: totals in PHP Warning: Invalid argument supplied for foreach() in PHP Notice: Undefined variable: cart_total in PHP Notice: Undefined variable: display_weight in PHP Notice: Undefined variable: display_model in Я не программист, захотелось попробовать что-то простое сделать) Третий день победить не получается. Пока скриптом сделал, работает. Но хотелось бы без скрипта. При этом оформление заказа же работает, курьерские службы, способы оплаты. Там тоже завязка от суммы корзины на бесплатную доставку работает, значит переменные передаются. А лог говорит, что нет. 0 Quote Link to comment Share on other sites More sharing options...
Sam Posted November 13, 2024 at 11:45 AM Author Share Posted November 13, 2024 at 11:45 AM В 13.11.2024 в 08:58, Tesloz сказал: Таки там надо присваивать в (если не ошибаюсь) $this->_templateData ну и название "cart_total" смени т.к. оно уже используется Показать контент if (strpos($text_items, '{quantity}') !== false || strpos($text_items, '{total}') !== false) { $find = array( '{quantity}', '{total}' ); $replace = array( '{quantity}' => $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), '{total}' => $this->simplecheckout->formatCurrency($total) ); $this->_templateData['cart_total'] = str_replace($find, $replace, $text_items); } else { $this->_templateData['cart_total'] = sprintf($text_items, $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->simplecheckout->formatCurrency($total)); } Спасибо! Помогло. Если кому-то пригодится, то вот решение для вывода сообщения, до бесплатной доставки осталось купить на: simplecheckout_cart.php $cart_total = $this->cart->getSubTotal(); $this->_templateData['total_cart_value'] = $cart_total; simplecheckout_cart.tpl <?php if (isset($total_cart_value) && (float)$total_cart_value < 4000): ?> <div style="color: #009CAA; font-size: 16px; font-weight: bold; margin-top: 10px; padding: 10px; border: 1px solid #009CAA; background-color: #DDF1F4; border-radius: 5px; text-align: right;"> До бесплатной доставки осталось купить на: <strong><?php echo number_format(4000 - (float)$total_cart_value, 2, '.', ' '); ?> рублей</strong> </div> <?php endif; ?> 0 Quote Link to comment Share on other sites More sharing options...
nikifalex Posted November 23, 2024 at 04:37 PM Share Posted November 23, 2024 at 04:37 PM ну вот а говорил не программист. а я всегда утверждал что любая кухарка может стать программистом. 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.