Jump to content
Rex4r

[Решено] Отображение цены со скидкой на страницах категории и в модулях

Recommended Posts

Добрый день. Задача вроде бы простая, но ни как не могу её решить. Необходимо чтобы на страницах каталога и в модулях (рекомендуемые и лидеры продаж) на ряду с обычной ценой выводилась цена со скидкой (оптовая цена при покупке от N товаров).

 

в controller/product.php используется

$discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']);

$this->data['discounts'] = array(); 
			
foreach ($discounts as $discount) {
	$this->data['discounts'][] = array(
		'quantity' => $discount['quantity'],
		'price'    => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')))
	);
}

но я не могу понять как это вставить в category.php потому, что там вообще нет 

if ($product_info) {

а в feature.php ругается на 

$discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']);

потому, что не знает что такое product_id и я не пойму как надо написать чтобы он понял

Share this post


Link to post
Share on other sites

Разобрался. Если кому надо:

 

в feature.php после

if ((float)$product_info['special']) {
$special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
$special = false;
}

пишем

$discounts = $this->model_catalog_product->getProductDiscounts($product_info['product_id']);

$this->data['discounts'] = array(); 


foreach ($discounts as $discount) {
$this->data['discounts'][] = array(
'quantity' => $discount['quantity'],
'price'    => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')))
);
}
 

В category.php после

if ((float)$result['special']) {
$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$special = false;} 

пишем

$discounts = $this->model_catalog_product->getProductDiscounts($result['product_id']);

$this->data['discounts'] = array(); 


foreach ($discounts as $discount) {
$this->data['discounts'][] = array(
'quantity' => $discount['quantity'],
'price'    => $this->currency->format($this->tax->calculate($discount['price'], $result['tax_class_id'], $this->config->get('config_tax')))
);
}

И в соответствующих .tpl где надо

<div class="discount">
  <?php foreach ($discounts as $discount) { ?>
    <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
  <?php } ?>
</div>

Share this post


Link to post
Share on other sites
Rex4r

спасибо за решение.

скажите, на какой версии вы реализовали?

Share this post


Link to post
Share on other sites

Rex4r

спасибо за решение.

скажите, на какой версии вы реализовали?

 

 

Должно работать на всех 1.5.x версиях. 

Share this post


Link to post
Share on other sites

 

Разобрался. Если кому надо:

 

в feature.php после

if ((float)$product_info['special']) {
$special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
$special = false;
}

пишем

$discounts = $this->model_catalog_product->getProductDiscounts($product_info['product_id']);

$this->data['discounts'] = array(); 


foreach ($discounts as $discount) {
$this->data['discounts'][] = array(
'quantity' => $discount['quantity'],
'price'    => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')))
);
}
 

В category.php после

if ((float)$result['special']) {
$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$special = false;} 

пишем

$discounts = $this->model_catalog_product->getProductDiscounts($result['product_id']);

$this->data['discounts'] = array(); 


foreach ($discounts as $discount) {
$this->data['discounts'][] = array(
'quantity' => $discount['quantity'],
'price'    => $this->currency->format($this->tax->calculate($discount['price'], $result['tax_class_id'], $this->config->get('config_tax')))
);
}

И в соответствующих .tpl где надо

<div class="discount">
  <?php foreach ($discounts as $discount) { ?>
    <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
  <?php } ?>
</div>

 

 

Подскажи пожалуйста, как у тебя выводятся скидки в категориях? У каждого товара соответствуют скидки? Сделал вроде все так как ты написал. Добавил в языках. Все выводится...но, у всех товаров в скидках выводятся одинаковые цены, взятые у одного из товаров. Что я упустил?

Share this post


Link to post
Share on other sites

ничего.

ошибки в приведенном коде.

Share this post


Link to post
Share on other sites

ничего.

ошибки в приведенном коде.

А не подскажите какие именно ошибки? Или принципиально не помогаете?

Если подскажите, буду очень благодарен.

Share this post


Link to post
Share on other sites

для категорий

[=== category.php ===]

1) забить на то, что написано в том сообщении.

2) сделать так

...
				$this->data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'name'        => $result['name'],
					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..',
					'price'       => $price,
					'special'     => $special,
...
>>

...
				$discounts = $this->model_catalog_product->getProductDiscounts($result['product_id']);
				$product_discounts = array();
				foreach ($discounts as $discount) {
					$product_discounts[] = array(
						'quantity' => $discount['quantity'],
						'price'    => $this->currency->format($this->tax->calculate($discount['price'], $result['tax_class_id'], $this->config->get('config_tax')))
					);
				}
				
				$this->data['products'][] = array(
					'product_id'  => $result['product_id'],
					'thumb'       => $image,
					'name'        => $result['name'],
					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..',
					'price'       => $price,
					'special'     => $special,
					'discounts'   => $product_discounts,
...

[=== category.tpl ===]

1) забить на то, что написано в том сообщении.

2)

...
    <?php foreach ($products as $product) { ?>
    <div>
...
>>

...
    <?php foreach ($products as $product) { ?>
    <div>
		<?php if ($product['discounts']) { ?>
			<div class="discount">
				<?php foreach ($product['discounts'] as $discount) { ?>
					<?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
				<?php } ?>
			</div>
		<?php } ?>
...

Share this post


Link to post
Share on other sites

Спасибо большое за помощь. Сделал все как написали. К сожалению, при переходе в категории только белый экран. Это только если переходить по категориям, в остальном сайт работает. Ошибки тоже не выдает. Вроде в контроллере и в языках все добавил. Может я что пропустил. В чем может быть проблема? Я в этом мало разбираюсь, только познаю так сказать.

Share this post


Link to post
Share on other sites

смотри объявления и FAQ.

устраняй ошибки.

Share this post


Link to post
Share on other sites

Здравствуйте!

а не подскажете как вывести значения конкретных цен со скидками от количества?

т.е. не все вместе через такой код:

<?php if ($product['discount']) { ?>
<ul>
<?php foreach ($product['discount'] as $discount) { ?>
<li>
<?php echo $text_discount; ?>
(<?php echo $discount['quantity']; ?>
<?php echo $text_piece ?>)
<span><?php echo $discount['price']; ?></span> /
<?php echo $text_piece ?>
</li>
<?php } ?>
</ul>

а именно по отдельности.

т.е. при покупке 10, например, цену (указанную в карточке товара в админке) как вывести отдельно от остальных?

наверняка же можно это сделать как-то, но решения в интернете пока не нашёл.

Share this post


Link to post
Share on other sites

Подниму тему. Версия ocStore 2.3.0.2.3. Третий день курю форумы и перепробовал все расписанные варианты, толку нет. Есть ли варианты вывести 2 цены (основная и со скидкой) для все пользователей для моей версии движка. Если есть у кого-то готовое простое решение, буду крайне признателен за помощь. Если есть решение в виде модуля или дополнения, готов рассмотреть платный вариант. Пишите в личку. Заранее благодарен за помощь.

Edited by inlska

Share this post


Link to post
Share on other sites
Цитата

Есть ли варианты вывести 2 цены (основная и со скидкой) для все пользователей для моей версии движка.

Делал как то.

9017067913.jpg

Share this post


Link to post
Share on other sites
Только что, Tom сказал:

Делал как то.

9017067913.jpg

Отличный вариант. Как реализовать?

Share this post


Link to post
Share on other sites

Вам нужно расписать что и куда сделать?Потому как в данном случае ,все правки сделаны в файлах.

Share this post


Link to post
Share on other sites
Только что, Tom сказал:

Вам нужно расписать что и куда сделать?Потому как в данном случае ,все правки сделаны в файлах.

Если Вам не сложно, то было бы замечательно. 

Share this post


Link to post
Share on other sites

Попробую,когда появится свободное время.

  • +1 1

Share this post


Link to post
Share on other sites
В 12.07.2017 в 21:54, Tom сказал:

Делал как то.

9017067913.jpg

а можно и мне решение если есть

Share this post


Link to post
Share on other sites

Решение в виде чего ? Написать что и куда -  сразу нет.

Share this post


Link to post
Share on other sites
В 22.09.2015 в 23:37, Curant сказал:

 

Подскажи пожалуйста, как у тебя выводятся скидки в категориях? У каждого товара соответствуют скидки? Сделал вроде все так как ты написал. Добавил в языках. Все выводится...но, у всех товаров в скидках выводятся одинаковые цены, взятые у одного из товаров. Что я упустил?

Добрый день! Пытался реализовать все это на opencart 2.3.0.2, неполучается. Может кто то подсказать как это сделать? Помогите пож.

Разобрался. 

 

в feature.php после

if ((float)$product_info['special']) {
$special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
$special = false;
}

пишем

$discounts = $this->model_catalog_product->getProductDiscounts($product_info['product_id']);

$this->data['discounts'] = array(); 


foreach ($discounts as $discount) {
$this->data['discounts'][] = array(
'quantity' => $discount['quantity'],
'price'    => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')))
);
}
 

В category.php после

if ((float)$result['special']) {
$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$special = false;} 

пишем

$discounts = $this->model_catalog_product->getProductDiscounts($result['product_id']);

$this->data['discounts'] = array(); 


foreach ($discounts as $discount) {
$this->data['discounts'][] = array(
'quantity' => $discount['quantity'],
'price'    => $this->currency->format($this->tax->calculate($discount['price'], $result['tax_class_id'], $this->config->get('config_tax')))
);
}

И в соответствующих .tpl где надо

<div class="discount">
  <?php foreach ($discounts as $discount) { ?>
    <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
  <?php } ?>
</div>
Edited by artemleon

Share this post


Link to post
Share on other sites
29 минут назад, artemleon сказал:

Разобрался. 

Не похоже , что данное решение будет работать на 2.3

  • +1 1

Share this post


Link to post
Share on other sites
12 минут назад, Tom сказал:

Не похоже , что данное решение будет работать на 2.3

) Та 100% неработает. Пробовал. Но к моему большему сожалению другого нет. Может сможете подсказать кто??

Share this post


Link to post
Share on other sites

в движках 2х для передачи данных в шаблон вместо подобного

$this->data['discounts']

 

нужно использовать

$data['discounts']

Share this post


Link to post
Share on other sites
$this->data

Это для 1.5

 

В 2.3

 

$data

ну и посмотрите как выводится валюта, это вот не верно
 

'price'    => $this->currency->format($this->tax->calculate($discount['price'], $result['tax_class_id'], $this->config->get('config_tax')))

 

Share this post


Link to post
Share on other sites

А как это все реализовать для карточки товара? например для рекомендуемые товары. 
Тоесть в карточке товара есть блок с превъюшками других подобных товаров и вот надо чтобы в этих самых превъхах выводилась скидка 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By louise170
      900.00 руб
      Скачать/Купить дополнение


      Управление ценами
      Модуль предназначен для массового изменения цен в товарах.

      Возможности
      Массовое изменение обычных цен в товарах и их опциях. Массовое создание или закрытие скидок и спец. предложений. При совместной работе с модулем Валюта плюс, можно изменять массово базовые цены, наценку и базовую валюту в товарах. Товары можно выбирать в зависимости от категории, производителя, а также от модели и артикула. Цена может меняться в обе стороны, как в плюс так и в минус. Цену можно менять на заданное значение или на заданную процентную величину. Можно задать массово конкретные цены, например, все товары по 1000 руб. Есть возможность задавать различные варианты округления полученных цен. При совместной работе с модулем Группы товаров, появляется возможность выбирать товары из определенной заранее созданной группы. В лог в краткой форме пишется история того, что было проделано с ценами.
      Модуль "Управление ценами" совместим с модулем Валюта Плюс - позволяет массово менять базовые цены и процент наценки в товарах.
      Модуль "Управление ценами" совместим с модулем Группы товаров. Если установлен модуль "Группы товаров", то вместо списка категорий и производителей в форме будет отображаться список активных групп товаров.
      Модуль "Управление ценами" совместим с модулем Связанные опции
      поскольку связка опций идет в отдельной вкладке, а дальше идет работа с обычными опциями, под которые доработки есть.
      Модуль "Управление ценами" совместим с модулем Option To Product
      можно управлять ценами и спец. предложениями в опциях, которые создаются через этот модуль.

      Никакие системные файлы не затираются, модуль использует vqmod/ocmod.

      Модуль тестировался
      на Opencart
      1.5.3.1 1.5.4.1 1.5.6 1.5.6.4 2.0.1.1 2.1.0.1 2.2.0.0 2.3.0.2
      Поддерживаемые языки:
      русский
       
      Пример работы модуля:
      http://ocstore1541.opencartplus.ru/admin/
      http://opencart2.opencartplus.ru/admin/
      http://ocstore2302.opencartplus.ru/admin/
      доступ
      demo / demo

      Лицензия
      При покупке данного модуля, Вы получаете право установки его на один домен.
      Лицензионный ключ можно получить по запросу на e-mail, который вы увидите на странице модуля, после его установки.

      Установка
      Инструкция по установке находится в файле readme.txt в архиве модуля.

      Требования к серверу
      На хостинге должен быть PHP 5.3 или выше. На хостинге должен быть установлен ionCube Loader последней версии (минимум версия 5.0). Чтобы проверить его наличие скачайте этот файл, разархивируйте его содержимое и закачайте в корневую директорию Вашего сайта. После этого откройте в браузере http://ваш_сайт/test_ioncube.php В PHP должна быть включена работа функции file_get_contents.  
      FAQ
      FAQ по модулю Управление ценами FAQ общие вопросы по Опенкарту  
      Добавил louise170 Добавлено 22.07.2014 Категория Цены, скидки, акции, подарки Системные требования PHP 5.3+, IonCube Loader версии 5.0+, для Опенкарт 1.5.х - VQMOD не ниже версии 2.4.1 Сайт разработчика Старая цена Метод активации Автоматическая активация Ioncube Loader Требуется OpenCart 2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика  
    • By lolwe
      Модуль расширяет стандартные возможности OpenCart, позволяя создать наборы из нескольких товаров и установить скидку на созданный набор. 
      Демо:
      Пример работы дополнения можно увидеть по ссылкам ниже:
      Панель администратора.
      Пример товара, который участвует в наборе.
       
      Описание расширения:
      Максимальное количество товаров в наборе: 4 шт. Максимальное количество наборов на сайте: не ограничено. Скидки можно задавать в процентах или фиксированно в валюте Вашего магазина.  
      Дополнение поддерживает два вида наборов:

      1) Наборы с фиксированной скидкой
       
       
      2) Динамическая скидка:
       
      Инструкция по установке:
      Для установки и запуска дополнения следует выполнить следующие шаги:
      Купить и загрузить дополнение Распаковать загруженный архив на компьютер Выбрать плагин, соответсвующий версии OpenCart на Вашем сайте Выполнить установку дополнения с помощью установщика OCMOD (Админка - Расширения - Установка расширений) Обновить модификаторы (Расширения - модификаторы - обновить модификаторы) Перейти в пункт «учитывать в заказе» на вкладке расширений и активировать модуль «скидка на набор товаров / Discount on a set of products», указав порядок сортировки 3 (эта цифра должна быть больше чем цифра у модуля «Всего / Total») После успешной установки у Вас появится возможность создавать новые наборы на вкладке «Каталог» - «Наборы товаров»  
      Примечание: на п.6, при сохранении настроек модуля некоторые пользователи получают ошибку, связанную с правами доступа. Эту ошибку можно игнорировать.
       
      Поддерживаемые версии:
       
      Известные недостатки:
      Я знаю, нет ничего идеального, но признание и понимание своих недостатков позволяет нам стать лучше. Сюда будут публиковаться все недостатки данного дополнения, которые в будущих версиях будут исправлены. Если Вы купили данное дополнение и обнаружили недостатки в нем - пишите личным сообщением автору / в теме поддержки дополнения.
       
      На данный момент плагин имеет такие недостатки:
      Модуль не работает с опциями товаров; Мобильная версия виджета на данный момент отображается криво; Нет возможности вывести виджет набора в произвольном месте.  
      В планах:
      Все покупатели пользователи https://opencartforum.com могут внести предложение по развитию данного дополнения. Предложения, принятые к внедрению будут публиковаться здесь. Все предложения пользователей, которые уже внедрены, будут опубликованы в истории изменений.
       
      В ближайших версиях дополнения все пользователи получат такую функциональность:
      Добавить страницу настроек виджета с возможностью управлять цветовой схемой и отображаемыми элементами внутри виджета (от пользователя aiwa) Упростить процедуру установки модуля. На данный момент некоторые пользователи путаются в шагах его установки Написать генератор наборов, который по определенному алгоритму будет объединять товары в наборы
      Поддержка:

      Лицензия:
       
    • By lolwe
      800.00 руб
      Скачать/Купить дополнение


      Скидка на набор товаров (вместе дешевле) для OpenCart 2
      Модуль расширяет стандартные возможности OpenCart, позволяя создать наборы из нескольких товаров и установить скидку на созданный набор. 
      Демо:
      Пример работы дополнения можно увидеть по ссылкам ниже:
      Панель администратора.
      Пример товара, который участвует в наборе.
       
      Описание расширения:
      Максимальное количество товаров в наборе: 4 шт. Максимальное количество наборов на сайте: не ограничено. Скидки можно задавать в процентах или фиксированно в валюте Вашего магазина.  
      Дополнение поддерживает два вида наборов:

      1) Наборы с фиксированной скидкой
       
       
      2) Динамическая скидка:
       
      Инструкция по установке:
      Для установки и запуска дополнения следует выполнить следующие шаги:
      Купить и загрузить дополнение Распаковать загруженный архив на компьютер Выбрать плагин, соответсвующий версии OpenCart на Вашем сайте Выполнить установку дополнения с помощью установщика OCMOD (Админка - Расширения - Установка расширений) Обновить модификаторы (Расширения - модификаторы - обновить модификаторы) Перейти в пункт «учитывать в заказе» на вкладке расширений и активировать модуль «скидка на набор товаров / Discount on a set of products», указав порядок сортировки 3 (эта цифра должна быть больше чем цифра у модуля «Всего / Total») После успешной установки у Вас появится возможность создавать новые наборы на вкладке «Каталог» - «Наборы товаров»  
      Примечание: на п.6, при сохранении настроек модуля некоторые пользователи получают ошибку, связанную с правами доступа. Эту ошибку можно игнорировать.
       
      Поддерживаемые версии:
       
      Известные недостатки:
      Я знаю, нет ничего идеального, но признание и понимание своих недостатков позволяет нам стать лучше. Сюда будут публиковаться все недостатки данного дополнения, которые в будущих версиях будут исправлены. Если Вы купили данное дополнение и обнаружили недостатки в нем - пишите личным сообщением автору / в теме поддержки дополнения.
       
      На данный момент плагин имеет такие недостатки:
      Модуль не работает с опциями товаров; Мобильная версия виджета на данный момент отображается криво; Нет возможности вывести виджет набора в произвольном месте.  
      В планах:
      Все покупатели пользователи https://opencartforum.com могут внести предложение по развитию данного дополнения. Предложения, принятые к внедрению будут публиковаться здесь. Все предложения пользователей, которые уже внедрены, будут опубликованы в истории изменений.
       
      В ближайших версиях дополнения все пользователи получат такую функциональность:
      Добавить страницу настроек виджета с возможностью управлять цветовой схемой и отображаемыми элементами внутри виджета (от пользователя aiwa) Упростить процедуру установки модуля. На данный момент некоторые пользователи путаются в шагах его установки Написать генератор наборов, который по определенному алгоритму будет объединять товары в наборы
      Поддержка:

      Лицензия:
       
      Добавил lolwe Добавлено 07.08.2018 Категория Серии, Комплекты Системные требования PHP 5.3+, OpenCart 2 (Любая версия) Сайт разработчика Старая цена 800 Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1 Обращение к серверу разработчика Нет  
    • By ashap
      Модуль позволяет установить наценку или скидку любому методу оплаты
      Работает как с фиксированной суммой так и в процентах. Есть возможность указать налоги.
       
      Версия для магазинов 3.x по ссылке
          *Не заменяет системных файлов *Совместим с модулем simple   Смотрите также другие модули по ссылке
    • By ashap
      750.00 руб
      Скачать/Купить дополнение


      Комиссия (наценка) или скидка для оплаты
      Модуль позволяет установить наценку или скидку любому методу оплаты
      Работает как с фиксированной суммой так и в процентах. Есть возможность указать налоги.
       
      Версия для магазинов 3.x по ссылке
          *Не заменяет системных файлов *Совместим с модулем simple   Смотрите также другие модули по ссылке
      Добавил ashap Добавлено 26.02.2017 Категория Цены, скидки, акции, подарки Системные требования Сайт разработчика https://store.pe-art.ru/ Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Нет  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.