Sam Опубликовано 12.11.2024 в 13:59 Поделиться Опубликовано 12.11.2024 в 13:59 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AlexDW Опубликовано 12.11.2024 в 14:47 Поделиться Опубликовано 12.11.2024 в 14:47 проверьте что у вас с $data['cart_total'] пробуйте другое название переменной, возможно перезаписывается 0 Цитата модули для удобной работы с Opencart Ссылка на комментарий Поделиться на другие сайты Поделиться
Решение Tesloz Опубликовано 13.11.2024 в 05:58 Решение Поделиться Опубликовано 13.11.2024 в 05:58 Таки там надо присваивать в (если не ошибаюсь) $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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sam Опубликовано 13.11.2024 в 09:44 Автор Поделиться Опубликовано 13.11.2024 в 09:44 В 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sam Опубликовано 13.11.2024 в 11:45 Автор Поделиться Опубликовано 13.11.2024 в 11:45 В 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.