Toxa

Добавить перед текстом "X товаров - X.XX руб." - текст "В корзине:"

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

Toxa    11

Задача - добавить перед количеством товара - слова "В корзине".

Сейчас выглядит так: "1 товар - 510.00 руб." а надо - "В корзине 1 товар - 510.00 грн."

Пока что добавил добавил в файл /template/common/header.tpl:

<div id="cart">
    <div class="heading">
	  <font color="#FFFFFF">В корзине</font><h4><?php echo $text_cart; ?></h4>
	  <a><span id="cart_total"><?php echo $text_items; ?></span></a></div>
    <div class="content"></div>
</div>
но, понятное дело, слова "В корзине" в этом случае не кликабельны, т.е. при наведении на них корзина не появляется, т.к. сама ссылка выводится в $text_cart;.

Как бы мне запихнуть их туда, где собственно формируется кол-во товаров и цена? Всё облазил, не разобрался, пока не силен в php :(

Единственный момент - я использую доработку "Простая регистрация и заказ Simple" (https://opencartforum.com/topic/6738-платно-простая-регистрация-и-заказ-simple-110/)

Она заменяет стандартную обработку корзины в файле catalog/controller/checkout/cart.php на свою - в файле catalog/controller/checkout/simplecheckout_cart.php

Но ни в cart.php ни в simplecheckout_cart.php не нашел где формируется "X товаров - X.XX руб."

Буду очень благодарен за помощь! :-)

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


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

catalog/language/russian/common/header.php
Найти

$_['text_items']	 = '%s шт. - %s';
заменить на

$_['text_items']	 = 'В корзине %s шт. - %s';
ЗЫ. Только у вас там не "шт." написано, а "товар", насколько я понял. Но сути это не меняет. Правда, глупо выглядит, если будет написано "В корзине 2 товар". :-)

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


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

monax, cпасибо за помощь! Я тоже сначала там копал, и у меня теперь там так и написано, но я не написал о еще одном моменте - я использую доработку "Умная корзина" - OCU Smarty Cart (Косметическое расширение на базе vQmod для корзины в шапке сайта, которое позволяет отображать человекопонятные склонения слов к количеству вложенных товаров. К примеру вместо 1 товар(ов) будет показано 1 товар или 2 товара, 27 товаров и т.д.)

Вот код ocu_smarty_cart.xml

<modification>
    <id>OCU Smarty Cart</id>
    <version>1.5.1</version>
    <vqmver>1.2/10.08.2011</vqmver>
    <author>Eugene Kuligin (a.k.a. Shaman)</author>
    <file name="system/engine/controller.php">
	    <operation>
		    <search position="before">
			    <![CDATA[protected function render() {]]>
		    </search>
		    <add>
			    <![CDATA[
				    protected function plural_tool($number, $total, $text) {
					    $cases = array (2, 0, 1, 1, 1, 2);
					    return $number . ' ' . $text[(($number % 100) > 4 && ($number % 100) < 20) ? 2 : $cases[min($number % 10, 5)]] . ' - ' . $total;
				    }
			    ]]>
		    </add>
	    </operation>
    </file>
    <file name="catalog/controller/common/header.php">
	    <operation>
		    <search position="replace">
			    <![CDATA[$this->data['text_items'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total));]]>
		    </search>
		    <add>
			    <![CDATA[
				    switch (isset($this->request->cookie['language']) && $this->request->cookie['language']) {
					    case 'ru':
						    $this->data['text_items'] =  $this->plural_tool(
														 $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0),
														 $this->currency->format($total),
														 array('товар','товара','товаров'));
					    break;
					    case 'ua':
						    $this->data['text_items'] =  $this->plural_tool(
														 $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0),
														 $this->currency->format($total),
														 array('товар','товару','товарів'));
					    break;
					    default:
						    $this->data['text_items'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total));
				    }
			    ]]>
		    </add>
	    </operation>
    </file>
    <file name="catalog/controller/checkout/cart.php">
	    <operation>
		    <search position="replace">
			    <![CDATA[$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));]]>
		    </search>
		    <add>
			    <![CDATA[
				    switch (isset($this->request->cookie['language']) && $this->request->cookie['language']) {
					    case 'ru':
						    $json['total'] =  $this->plural_tool(
														 $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0),
														 $this->currency->format($total),
														 array('товар','товара','товаров'));
					    break;
					    case 'ua':
						    $json['total'] = $this->plural_tool(
														 $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0),
														 $this->currency->format($total),
														 array('товар','товару','товарів'));
					    break;
					    default:
						    $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));
				    }
			    ]]>
		    </add>
	    </operation>
    </file>

	 <file name="catalog/controller/checkout/simplecheckout_cart.php">
	    <operation>
		    <search position="replace">
			    <![CDATA[$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));]]>
		    </search>
		    <add>
			    <![CDATA[
				    switch (isset($this->request->cookie['language']) && $this->request->cookie['language']) {
					    case 'ru':
						    $json['total'] =  $this->plural_tool(
														 $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0),
														 $this->currency->format($total),
														 array('товар','товара','товаров'));
					    break;
					    case 'ua':
						    $json['total'] = $this->plural_tool(
														 $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0),
														 $this->currency->format($total),
														 array('товар','товару','товарів'));
					    break;
					    default:
						    $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));
				    }
			    ]]>
		    </add>
	    </operation>
    </file>
</modification>

Может надо где-то в этом коде делать вставку слов "В корзине"? (надо было учить пхп когда возможность была :( )

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


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

Разобрался, может кому пригодиться.

Строка В корзине х товар - х руб. формируется в xml файле vqmod-а Умная корзина - ocu_smarty_cart.xml.

В коде

		    <add>
			    <![CDATA[
				    protected function plural_tool($number, $total, $text) {
					    $cases = array (2, 0, 1, 1, 1, 2);
                        return $number . ' ' . $text[(($number % 100) > 4 && ($number % 100) < 20) ? 2 : $cases[min($number % 10, 5)]] . ' - ' . $total;
				    }
			    ]]>
		    </add>

меняем строчку

  return $number . ' ' . $text[(($number % 100) > 4 && ($number % 100) < 20) ? 2 : $cases[min($number % 10, 5)]] . ' - ' . $total;

на

  return 'В корзине ' . $number  .' ' . $text[(($number % 100) > 4 && ($number % 100) < 20) ? 2 : $cases[min($number % 10, 5)]] . ' - ' . $total;

и всё.

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


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

А как реализовать такой вариант. 

В шапке где корзина не "Х  штук(и) - X.XX рублей", а просто "X.XX рублей"?

У меня ещё модуль simple стоит и помогите найти откуда "ноги растут".

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


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

А как реализовать такой вариант. 

В шапке где корзина не "Х  штук(и) - X.XX рублей", а просто "X.XX рублей"?

У меня ещё модуль simple стоит и помогите найти откуда "ноги растут".

Догадался сам:

Исправил в \catalog\controller\module\cart.php 

вывод с:

$this->data['text_items'] = 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->data['text_items'] = sprintf($this->currency->format($total));

И стала показывать как надо.

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


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

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

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

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

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

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

Войти

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

Войти


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

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