Rex4r

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

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

Rex4r    0

Добрый день. Задача вроде бы простая, но ни как не могу её решить. Необходимо чтобы на страницах каталога и в модулях (рекомендуемые и лидеры продаж) на ряду с обычной ценой выводилась цена со скидкой (оптовая цена при покупке от 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 и я не пойму как надо написать чтобы он понял

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


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

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

 

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

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


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

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

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

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


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

Rex4r

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

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

 

 

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

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


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

 

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

 

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

 

 

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

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


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

ничего.

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

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


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

ничего.

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

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

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

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


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

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

[=== 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 } ?>
...

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


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

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

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


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

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

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

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


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

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

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

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

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

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

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


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

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

Изменено пользователем inlska

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


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

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

Делал как то.

9017067913.jpg

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


Ссылка на сообщение
Поделиться на другие сайты
inlska    0
Только что, Tom сказал:

Делал как то.

9017067913.jpg

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

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
inlska    0
Только что, Tom сказал:

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

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

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти


  • Похожий контент

    • От Rahashan
      Добрый день!
      Ищу модуль для Opencart 2.1 для создания купона с более сложной системой скидок, чем в стандартной версии. Например, чтобы он высчитывал скидку 7% на продукты питания и 5% на все остальное.
    • От Sfeno

      Скачать/Купить дополнение


      Стикер акции на изображении товара
      При назначении на товар акционной цены, вычисляет процент скидки и помещает стикер на изображении товара на странице категории и в карточке товара.
      Стикер создан на CSS, не картинка, поэтому цвет, форму и размер можете подправить сами в файле action_label.css.
       
      Стандартная установка через установку расширений.
       
      Для OpencCart и ocStore версий 2+ используйте файл ActionLabel_2.ocmod.zip. 
      Для OpencCart 3 - ActionLabel_3.ocmod.zip
       
      Проверялся на дефолтном шаблоне и теме Next Default.
      ActionLabel_2.ocmod.zip
      ActionLabel_3.ocmod.zip
      Добавил Sfeno Добавлено 24.11.2017 Категория Меню, дизайн, внешний вид Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Не проверялось  
    • От Elena7842
      Добрый день, ребята. Не знаю в какую тему это сообщение писать, пишу в песочницу).
      Недавно обнаружила такую неприятность: если добавлять скидку в товары массово через батчэдитор, то при заходе в товар через обычный редактор обнуляется значение скидки, поле становится со значением "0" и если этого не заметить и сохранить отредактированный товар, то на страинце скидка нулевая. Если после батчэдитора проставить скидки вручную, то какое-то время они отображаются нормально, но потом снова обнуляются. Если скидку добавлять вручную, она сохраняется без изменений.
      У кого-то было такое и как решили проблему?
    • От Sfeno
      При назначении на товар акционной цены, вычисляет процент скидки и помещает стикер на изображении товара на странице категории и в карточке товара.
      Стикер создан на CSS, не картинка, поэтому цвет, форму и размер можете подправить сами в файле action_label.css.
       
      Стандартная установка через установку расширений.
       
      Для OpencCart и ocStore версий 2+ используйте файл ActionLabel_2.ocmod.zip. 
      Для OpencCart 3 - ActionLabel_3.ocmod.zip
       
      Проверялся на дефолтном шаблоне и теме Next Default.
      ActionLabel_2.ocmod.zip
      ActionLabel_3.ocmod.zip
    • От sergiussv

      400.00 руб
      Скачать/Купить дополнение


      Скидка от суммы заказов
      Модуль накопительной скидки для разных групп покупателей

      Возможности
      Устанавливать скидку как в процентах так и фиксированную величину Для разных групп покупателей можно сделать свои условия Для подсчета суммы заказов можно учитывать заказы с разными статусами Для подсчета суммы заказов можно выбрать или стоимость корзины или общую стоимость заказа Все настройки независимы для разных групп покупателей  
      Установка
      Или через "Установку дополнений" или через FTP залить содержимое папки upload на сервер

      Настройка модуля
      Дополнения -> Учитывать в заказе -> Скидка от суммы заказов

      Совместимость
      Opencart версии 2.3 и его разновидности

      Использование 
      Одна копия на один сайт и его поддомены
      Добавил sergiussv Добавлено 30.11.2017 Категория Цены, скидки, акции, подарки Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Opencart.pro 2.3  
  • Последние посетители   0 пользователей онлайн

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