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

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


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 и я не пойму как надо написать чтобы он понял

Надіслати
Поділитися на інших сайтах


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

 

в 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>
Надіслати
Поділитися на інших сайтах


  • 5 months later...

 

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

 

в 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>

 

 

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

Надіслати
Поділитися на інших сайтах


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

[=== 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 } ?>
...
Надіслати
Поділитися на інших сайтах

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

Надіслати
Поділитися на інших сайтах


  • 7 months later...

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

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

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

<?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, например, цену (указанную в карточке товара в админке) как вывести отдельно от остальных?

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

Надіслати
Поділитися на інших сайтах


  • 1 year later...

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

Змінено користувачем inlska
Надіслати
Поділитися на інших сайтах


Цитата

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

Делал как то.

9017067913.jpg

Надіслати
Поділитися на інших сайтах

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

Надіслати
Поділитися на інших сайтах

Только что, Tom сказал:

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

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

Надіслати
Поділитися на інших сайтах


  • 7 months later...
  • 2 months later...
В 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>
Змінено користувачем artemleon
Надіслати
Поділитися на інших сайтах


29 минут назад, artemleon сказал:

Разобрался. 

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

  • +1 1
Надіслати
Поділитися на інших сайтах

12 минут назад, Tom сказал:

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

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

Надіслати
Поділитися на інших сайтах


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

 

Надіслати
Поділитися на інших сайтах

  • 2 months later...

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

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

Important Information

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