Урок 17 Выводим скидочные цены в каталоге и модулях

Думаю ни для кого не секрет, что в opencart можно задавать скидочные цены в зависимости от количества покупаемого товара. Т.е., например, при покупке 100 единиц товара цена будет одна, при покупке 1000 — другая и так далее. Таким образом можно мотивировать покупать больше, чтобы сэкономить.

После этого в карточке товара можно наблюдать такую информацию
Зачастую разумно показывать данную информацию в списке товаров, нежели только в карточке. Особенно когда товар специфический. Например, болты, гайки и т.п. Согласитесь, заходить в каждый товар и смотреть какая скидка от количества — долго и утомительно. Скорее всего покупатель просто покинет Ваш магазин.
Так как же вывести данную информацию в каталоге товаров, а так же в модулях? Тут нет ничего сложного. Достаточно внести пару доработок в контроллер и шаблон модуля или категории. Приступим.
Для того, чтобы вывести информацию о скидочных ценах в категории, заходим в
1 |
catalog/controller/product/category.php |
и после
1 2 3 4 5 |
if ($this->config->get('config_review_status')) { $rating = $result['rating']; } else { $rating = false; } |
добавляем следующее
1 2 3 4 5 6 7 8 9 10 11 |
//Discounts $discounts_info = $this->model_catalog_product->getProductDiscounts($result['product_id']); $discounts = array(); foreach ($discounts_info as $discount) { $discounts[] = array( 'quantity' => $discount['quantity'], 'price' => $this->currency->format($this->tax->calculate($discount['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']) ); } |
Далее в этом же файле находим
1 |
$data['products'][] = array( |
и после добавляем
1 2 |
'discounts' => $discounts, 'tax_class_id' => $result['tax_class_id'], |
С контроллером закончили, теперь необходимо вывести информацию. Для этого идем в
1 |
catalog/view/theme/even/template/product/category.tpl |
и в нужном месте, например после
1 |
<?php echo $description; ?> |
добавляем
1 2 3 4 5 6 |
<?php if ($product['discounts']) { ?> <?php foreach ($product['discounts'] as $discount) { ?> <p><?php echo $discount['price'] ?></p> <p> от <?php echo $discount['quantity'] ?> ед.</p> <?php } ?> <?php } ?> |
После не забудьте обновить модификаторы. И если все сделано правильно, при переходе в категорию Вы должны увидеть следующее
Для модулей все делается по аналогии. Исключением является только модуль рекомендуемых
1 |
catalog/controller/extension/module/featured.php |
В нем после
1 2 3 4 5 |
if ($this->config->get('config_review_status')) { $rating = $product_info['rating']; } else { $rating = false; } |
добавляем следующее
1 2 3 4 5 6 7 8 9 10 11 |
//Discounts $discounts_info = $this->model_catalog_product->getProductDiscounts($product_info['product_id']); $discounts = array(); foreach ($discounts_info as $discount) { $discounts[] = array( 'quantity' => $discount['quantity'], 'price' => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']) ); } |
Далее в этом же файле находим
1 |
$data['products'][] = array( |
и после добавляем
1 2 |
'discounts' => $discounts, 'tax_class_id' => $product_info['tax_class_id'], |
Код для шаблона такой же, как и для категорий.
А можно показать, что тут поменять, чтобы в тройке (21 век жи) работало?
Не понял что именно Вы хотите.
Просто такая штука есть во многих местах и она рабочая. Но на опенкарт 3 найти инфу по этому вопросу ой как сложно. То, что у вас в статье на тройке не работает. Твиги, будь они не ладны 🙂
В теории код для опенкарт 3 немного другой.
Вот и спрашиваю… ведь статья эта уже немножко устаревает, инфа не всегда актуальна. Движек меняется.
Ну почему не актуальна? Если Вы думаете что все перепрыгнули на 3, то вы ошибаетесь) В сети хватает магазинов которые работают на 1.5 линейке и отлично себя чувствуют.
На днях постараюсь написать под 3 линейку.
Не подскажете, нет ли еще для opencart 3 решения?
Здравствуйте.
Пока не было времени написать.
добрый день
а почему может быть ошибка синтаксиса, причем ведет в систему, модификации
куда копать?
http://prntscr.com/1t002x6
Здравствуйте.
Надо приводить полный текст ошибки. А вообще поставьте тут запятую http://prntscr.com/1t1zafr