Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Не получается вывести $_['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 .

 

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

Link to post
Share on other sites

$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);

Link to post
Share on other sites
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);

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

Link to post
Share on other sites

5 минут назад, halvadoz сказал:

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

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

Link to post
Share on other sites
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'])

?

Edited by halvadoz
трактовка
Link to post
Share on other sites

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

$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 ...

Link to post
Share on other sites

1 час назад, ibond сказал:

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

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

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.