Урок 38 Как вывести основную и оптовую цену в opencart
Думаю все в курсе, что в опенкарт можно задавать скидочные цены. При чем их можно задавать для разных групп покупателей. Обычно скидочная цена задается в зависимости от количества товара. Выводятся эти цены обычно под основной ценой в виде таблицы.
А знали ли вы, что если скидка задается при покупке от одной единицы покупки, то именно скидочная цена будет отображена вместо основной цены?
Сегодня сделаем реализацию вывода розничной и оптовой цены для магазина, который помимо розничной торговли, занимается оптовой. Т.е. на сайте есть группа покупателей Оптовики. Все дело в том, что если для оптовых покупателей указать скидочную цену от 1 единицы товара, то будет выводиться только скидочная цена, и оптовик не будет видеть сколько он экономит, по сравнению с розничным покупателем.
Сложного ничего нет и работа займет не больше пяти минут.
Доработка делается только для карточки товара. Если Вам необходимо сделать подобную реализацию для категорий, страницы поиска, модулей, то делается это по аналогии.
Прежде всего переходим в модель товара
1 |
/catalog/model/catalog/product.php |
Примерно на 33 строке после
1 |
'price' => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']), |
Добавляем
1 |
'standart_price' => $query->row['price'], |
Сохраняем и переходим к контроллеру по адресу
1 |
/catalog/controller/product/product.php |
и после строки
1 |
$data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); |
нам необходимо добавить основную цену. Назовем ее standart_price. Вывод стандартной цены будет выглядеть так
1 |
$data['standart_price'] = $this->currency->format($this->tax->calculate($product_info['standart_price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); |
Однако это не все. Так как шаблон карточки товара для всех групп пользователей один, то необходимо задать условие, при котором мы будем или не будем отдавать стандартную цену. Так как если этого не сделать, то в карточке товара для оптового покупателя все будет работать правильно, а вот для розничного будет выводиться две одинаковые цены на с разным названием)
В итоге добавляемая конструкция будет выглядеть так
1 2 3 4 5 |
if ($product_info['standart_price']==$product_info['price']) { $data['standart_price'] = false; } else { $data['standart_price'] = $this->currency->format($this->tax->calculate($product_info['standart_price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } |
Сохраняем и переходим к визуальной части, а именно к изменению шаблона карточки товара по адресу
1 |
/catalog/view/theme/default/template/product/product.tpl |
Перед
1 |
<?php if ($tax) { ?> |
Добавляем
1 2 3 4 5 |
<?php if ($standart_price) { ?> <li> <h2>Розничная цена: <?php echo $standart_price; ?></h2> </li> <?php } ?> |
Такая конструкция верна для магазина с одним языком. Если же у Вас мультиязычный магазин, тогда вместо «Розничная цена:» необходимо добавить языковую переменную, прописать ее в контроллере, а в языковых файлах прописать значение. Об этом не один раз было написано в предыдущих статьях.
Сохраняем все изменения, обновляем модификаторы и если все сделано верно, то Вы должны увидеть что то такое
Оставить комментарий