Перейти к содержанию

Рекомендуемые сообщения

Здравствуйте, помогите пожалуйста - безуспешно пытаюсь добавить вывод количества товаров и общую стоимость во всплывающем окне с уведомлением о добавлении товара в корзину - https://prnt.sc/i3a13c. Используется шаблон unishop - на дефолтном шаблоне это удалось реализовать, а здесь увы ... Что делаю :

 

- в product.tpl добавляю ['total'] 

Спойлер

			if (json['success']) {
				//$('#content').parent().before('<div class="alert alert-success"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>');
				$('#content').parent().before('<div id="add_to_cart_success"> '+ json['success_new']['total'] +' </div>');
				$('#add_to_cart_success').popup({
					transition: 'all 0.3s',
					onclose: function () {
						setTimeout(function () {
							$('html, body').find('.tooltip').remove();
						}, 50);
					},
					closetransitionend: function () {
						$(this).remove();
				}
				});
				$('#add_to_cart_success').popup('show');
				
				product_id = $('input[name=\'product_id\']').val();
				$('#cart > button').html('<i class="fa fa-shopping-basket"></i><span id="cart-total">' + json['total_items'] + '</span>');
				//$('#cart > button') .html('<span id="cart-total"><i class="fa fa-shopping-cart"></i> ' + json['total'] + '</span>');
				replace_button(product_id);

				$('#cart > ul').load('index.php?route=common/cart/info ul li');
				$('#cart').addClass('show');
			}

 

 - в контроллере /catalog/controller/checkout/cart.php добавляю ['success']['total']  и ['success_new']['total']   ,  ['success'] оставляю.

Спойлер

if (!$json) {
				$this->cart->add($this->request->post['product_id'], $quantity, $option, $recurring_id);
                $json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));

				// Unset all shipping and payment methods
				unset($this->session->data['shipping_method']);
				unset($this->session->data['shipping_methods']);
				unset($this->session->data['payment_method']);
				unset($this->session->data['payment_methods']);

				// Totals
				$this->load->model('extension/extension');

				$totals = array();
				$taxes = $this->cart->getTaxes();
				$total = 0;
		
				// Because __call can not keep var references so we put them into an array. 			
				$total_data = array(
					'totals' => &$totals,
					'taxes'  => &$taxes,
					'total'  => &$total
				);

				// Display prices
				if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
					$sort_order = array();

					$results = $this->model_extension_extension->getExtensions('total');

					foreach ($results as $key => $value) {
						$sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
					}

					array_multisort($sort_order, SORT_ASC, $results);

					foreach ($results as $result) {
						if ($this->config->get($result['code'] . '_status')) {
							$this->load->model('extension/total/' . $result['code']);

							// We have to put the totals in an array so that they pass by reference.
							$this->{'model_extension_total_' . $result['code']}->getTotal($total_data);
						}
					}

					$sort_order = array();

					foreach ($totals as $key => $value) {
						$sort_order[$key] = $value['sort_order'];
					}

					array_multisort($sort_order, SORT_ASC, $totals);
				}

				$json['success']['total'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency']));
				$json['success_new']['total'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency']));
				$json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency']));
			} else {
				$json['redirect'] = str_replace('&amp;', '&', $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']));
			}

 

 

 - в локали /catalog/language/ru-ru/checkout/cart.php  

Спойлер

$_['text_success']    							= '<a href="%s">%s</a><br/>Товаров: %s (%s)';

 

 

- в локали /catalog/language/ru-ru/unishop/unishop.php

Спойлер

$_['text_success_new'] = 	'<i class="fa fa-times close" onclick="$(\'#add_to_cart_success\').popup(\'hide\')"></i>
							<div class="row">
								<div class="col-xs-12" style="color: #3FB516 !important; font-size: 19px;"><i class="fa fa-check-circle-o" aria-hidden="true" style="margin-right: 15px;"></i>Товар добвален в корзину</div>
							</div>
							<div class="row" style="margin-top: 30px;">
								<div class="col-xs-3"><img src="%s" class ="img-responsive" /></div>
								<div class="col-xs-9">%s</div>
							</div>
							<div class="row" style="position: absolute; bottom: 25px;">
								<div class="col-xs-6 text-left"><button class="btn btn-primary"  style="text-transform:uppercase; height:50px; min-width: 165px; background: #3FB516 !important;" onclick="$(\'#add_to_cart_success\').popup(\'hide\')">Продолжить</div>
								<div class="col-xs-6 text-right"><button class="btn btn-primary"  style="text-transform:uppercase; height:50px; min-width: 165px;" onclick="location=\'%s\'">Оформить заказ</button></div>
							</div>';

 

 

и получаю - https://prnt.sc/i3fy70 .

 

Помогите пожалуйста это поправить - все выходные ковыряюсь и никак ... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$json['success'] = sprintf($this->language->get('text_success'), '', $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));
 

sprintf($format, $num, $location);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
27 минут назад, ibond сказал:

$json['success'] = sprintf($this->language->get('text_success'), '', $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));
 

sprintf($format, $num, $location);

Спасибо, за ответ. Не совсем понимаю как это использовать - просто добавить в контроллер ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, halvadoz сказал:

Спасибо, за ответ. Не совсем понимаю как это использовать - просто добавить в контроллер ?

Я красным выделил, то что пропустили ('',). Ниже формат sprintf. Вы пропустили $num -- начиная с PHP 4.0.6 в строке формата поддерживается нумерация и изменение порядка параметров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
52 минуты назад, ibond сказал:

Я красным выделил, то что пропустили ('',). Ниже формат sprintf. Вы пропустили $num -- начиная с PHP 4.0.6 в строке формата поддерживается нумерация и изменение порядка параметров.

Извините, если я не компетентные вопросы задаю - сложность в том, что я не совсем программист.  Я понимаю, что у меня в контроллере пропущен "аргумент/значение" - для 1 из %s, но я не понимаю, что туда вставлять ... Что-то из этого - 

$this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency'])

?

Изменено пользователем halvadoz
трактовка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разместил в контроллере 

$json['success'] = sprintf($this->language->get('text_success'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));

 

добавил -  $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), , где указали

 

и 

$json['success_new']['total'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency']),$this->url->link('checkout/cart'));

 

,$this->url->link('checkout/cart') - переставил в конец строки

 

закомментировал //$json['success']['total'] = ...

 

['text_items'] выводится, во всплывающем окне - https://prnt.sc/i3hpzx, но теперь из него исчезли заголовок, миниатюра изображения и кнопки - https://prnt.sc/i3a13c ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, ibond сказал:

Спасибо, практически все получилось - https://prnt.sc/i3jm8s. Только никак не соображу как миниатюру добавить - в смысле в какой код вообще в sprintf прописать , чтоб в окне выводилась картинка товара (через %s в шаблоне) - в стандартном text_success опенкарта картинка не выводится, но шаблон unishop по дефолту как-то ее добавлял во всплывающее окно.

Подскажите пожалуйста, как правильно прописать вывод картинки в sprintf или где можно "подсмотреть" этот код ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.