Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Не получается вывести $_['text_items']


Recommended Posts

Здравствуйте, помогите пожалуйста - безуспешно пытаюсь добавить вывод количества товаров и общую стоимость во всплывающем окне с уведомлением о добавлении товара в корзину - 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.