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

[Решено] как вывести оптовую цену(discount) в модулях special, popular etc.


Recommended Posts

В магазине должно быть 2 цены - опт. и розн. Оптовая цена реализована через "скидки"(discount). В контроллере продукта (catalog/controller/product/product.php) как я понимаю этот код отвечает за оптовую цену:

$discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']);
$data['discounts'] = array();
foreach ($discounts as $discount) {
$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')))
	);
}

Как его правильно добавить в контроллеры module/special, popular, related и т.д.?

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


Возможно я неправильно поставил вопрос. Например, в дефолтном модуле "Товары со скидкой" (module/special) выводятся две цены: акционная (устанавливается на вкладке акции) и перечеркнутая стандартная. Но мне нужно вывести еще скидочную (количественную)(вкладка скидки) цену. Возможно это реализовать?

 

На странице продукта она выводится без проблем, а в модулях ее нет.

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


  • 2 weeks later...

В catalog/controller/module/popular.php после строк:

if ($this->config->get('config_review_status')) {
	$rating = $result['rating'];
} else {
	$rating = false;
}

добавил:

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

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

здесь же, после строки:

$data['products'][] = array(

добавил:

'discounts'    => $discounts,

В catalog/view/theme/default/template/module/popular.tpl добавил:

<?php if ($product['discounts']) { ?>
          <?php foreach ($product['discounts'] as $discount) { ?>
            <p><?php echo $discount['price'] ?></p>
            <p> от <?php echo $discount['quantity'] ?> ед.</p>
          <?php } ?>
 <?php } ?>

Работает, но выводится discount цена только в ДОЛЛАРАХ, и не реагирует на смену валют. Что это может быть, почему не отрабатывает "$this->currency" ? 

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


Вы помещаете пересчитанную цену со скидкой в $data['discounts'] а используете для отображения исходную из $discounts

поменяйте

'discounts'    => $discounts,

на

'discounts'    => $data['discounts'],
Надіслати
Поділитися на інших сайтах


  • 1 year later...

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

все подобные вещи: 

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

 лишь возвращают скидку самого товара, в карточке которого мы находимся! 

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


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

все подобные вещи: 

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

 лишь возвращают скидку самого товара, в карточке которого мы находимся! 

?????Тут вообще есть кто?

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


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

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

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

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

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

Вхід

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

Вхід зараз

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

Important Information

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