OpenCart - решение для оптового интернет-магазина

Данной статьей делаем пометку для себя и возможное решение для тех кто создает сайт самостоятельно. С помощью данной доработки можно использовать сайт с 2-3-мя ценами для разных групп, да и вообще ограничений нет.

Опенкарт изначально поддерживает группы пользователей и для каждой группы можно задавать стоимость за единицу товара по умолчанию.

Но если у вас есть уже готовый прайс и товаров более 1000 то вручную обработать это все почти невозможно.  Цифры означают ID группы (увидеть ее можно через базу данных сайта), mpn, ean, и isbn это дополнительные поля которые уже присутствуют в оперкарте, возможно и применение других. Взяты они потому что все популярные дополнения для загрузки прайс-листов поддерживают данные поля.  

В примере мы создали поддержку 4-х цен.

Так... начнем....

Категория - находим if с данными $price = $this->currency-> и меняем (весь блок) на следующее


if ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "1") {

$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));

} elseif ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "3") {

$price =  $this->currency->format($result['mpn']) ;

} elseif ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "4") {

$price =  $this->currency->format($result['ean']) ;

} elseif ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "6")  {

$price = $this->currency->format($result['isbn'])

} else {

$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));

}


Товар - находим строку if с данными $this->data['price'] и меняем (весь блок) на следующее


if ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "1") {

$this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));

} elseif ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "3") {

$this->data['price'] = $this->currency->format($product_info['mpn']) ;

} elseif ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "4") {

$this->data['price'] = $this->currency->format($product_info['ean']) ;

} elseif ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "6")  {

$this->data['price'] = $this->currency->format($product_info['isbn']) ;              

} else {

$this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));

}


Аналогично используя первый, или второй метод проделываем все с контролерами модулей выводящих товары.

Контролер, который передает данные о цене в корзину - находим файл по пути /system/library/cart.php

Строку $price = $product_query->row['price']; меняем на блок с условиями


if ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "1") {

$price = $product_query->row['price'];

} elseif ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "4") {

$price = $product_query->row['ean'];

} elseif ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "3") {

$price = $product_query->row['mpn'];

} elseif ($this->customer->isLogged() && $this->customer->getCustomerGroupId() == "6")  {

$price = $product_query->row['isbn'];

} else {

$price = $product_query->row['price'];

}


В итоге мы вручную заставили opencart выводить нужные цены для определенной группы покупателей. Не знаете PHP? Заказывайте создание качественного интернет-магазина в студии SiTe-LiNE.

Рекомендуем почитать

Читайте также

Выделенный IP-адрес для сайта Конструктор сайтов Сертификаты безопасности SSL – зачем они нужны Полезные коды PHP, CSS и не только Онлайн чат для сайта