По-умолчанию в OpenCart 2, если цена товара не указана, то в карточке товара она выводится как 0,00 руб, что выглядит совсем не привлекательно. Если изменить 0,00 руб на «По запросу» или «Договорная», то пользователям будет гораздо понятнее, что фиксированной цены нет. Как правильно реализовать данную фишку? Ответ в этой записи.
Если цена не указана, то выводим свою надпись в Опенкарт 2
В сети вы можете найти несколько реализаций замены цены 0,00 на «По запросу», однако зачастую они все реализуются не совсем корректно. Может быть так, что кроме надписи «Договорная» добавляется приписка валюты, т.е. руб., знак $ и так далее.
Корректный способ заключается во внесении изменений в контроллеры — при таком методе приписки исчезают и вместо отсутствующей цены и вывода 0,00 руб, вы увидите заветную надпись «По запросу».
Итак, если цена не указана, то вывести свою надпись в Опенкарт 2 можно, применив следующие изменения:
— в файле 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'))); |
на:
1 2 3 4 5 |
if ($product_info['price'] > 0) { $data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $data['price'] = $this->language->get('text_price_free'); } |
Тем самым мы вводим условие: если цена больше нуля, то выводим как обычно, иначе — выводим свой текст.
— в файлах, лежащих по пути catalog/language/*/*.php в любом месте, например, после комментария // Text:
добавляем:
1 |
$_['text_price_free'] = 'Цена договорная'; |
это и есть та самая надпись.
Также нужно внести изменения в catalog/controller/product/{category,manufacturer,product.php,special,search}*.php, catalog/controller/module/{bestseller,latest,special,special}*.php и catalog/controller/account/wishlist.php,catalog/controller/module/featured.php,catalog/controller/product/compare.php.
Чтобы не вносить изменения вручную, можно использовать специальный модификатор OCMOD — установить его также как и другие дополнения:
скачать модификатор «Цена по запросу» (с Яндекс.Диска)
Данное дополнение любезно предоставил пользователь «Том» с официального форума поддержки OpenCart2. Мод должен работать на всех версиях Опенкарт 2.
Почему то у меня не работает этот модификатор.
Кажется вместо строчки:
$data[‘price’] = $this->currency->format($this->tax->calculate($product_info[‘price’], $product_info[‘tax_class_id’], $this->config->get(‘config_tax’)));
у меня стоит Вот такое условие:
if ($this->customer->isLogged() || !$this->config->get(‘config_customer_price’)) {
$data[‘price’] = $this->currency->format($this->tax->calculate($product_info[‘price’], $product_info[‘tax_class_id’], $this->config->get(‘config_tax’)), $this->session->data[‘currency’]);
} else {
$data[‘price’] = false;
}