В OpenCart 3 немає вбудованої калькуляції ціни, тільки від кількості. Але якщо у нас є упаковка і нам потрібно вказати кількість в упаковці, що дорівнює дробовому, але при цьому замовлення має бути саме упаковками. Приклад ламінат чи цукерки, інший товар. У коробці 3,6 квадратних метрів, нам потрібно 10 коробок. Зіткнувся з такою проблемою, що навіть калькулятори для OpenCart які продаються за ціною від 50-100 $ у результаті в кошик передають тільки дробове значення, а не ціле значення, тобто кількість потрібних коробок. І розробники доповнення кажуть, що потрібно все доопрацьовувати і винен сам OpenCart його алгоритми. Для коректної правильної логічної роботи вимагає доопрацювання ще за додаткову вартість + до ліцензії.
Для того щоб ми могли вказувати кількість в упаковці нам потрібно вибрати поле в базі даних для цього. Я вибрав upc – тому, як і завантажити прайс-листом, можна і вже їсти воно, робити нове не треба. Взагалі подобається OpenCart тим, що, часто просто включивши кмітливість, можна вирішити найскладніші питання простим шляхом.
Ну і почнемо власне – у мене на це пішло години 3-4 (може більше, з огляду на те, що я в php я не дуже сильний) з OpenCart працюю давно тому знаю багато.
Шукаємо
/system/library/cart - cart.php
Десь 166 рядок
$price = $product_query->row['price'];
Міняємо на
if ($product_query->row['upc']) {
$price = ($product_query->row['price'] * $product_query->row['upc']);
}else{
$price = $product_query->row['price'];
}
Це дозволить за наявності upc (або ін. блок) виводити вартість, враховуючи кількість та виводити вартість без кількості в упаковці – як завжди.
Далі в контролері картки товару /catalog/controller/productproduct.phpпісля $data['model'] = $product_info['model']; додаємо $data['upc'] = $product_info['upc']; - це я знайшов на формі https://opencartforum.com/ дозволяє виводити upc у картку товару.
Для самого висновку відкриваємо файл /catalog/view/theme/default/template/product product.twig
Шукаємо {% if not special %}
У цьому блоці if міняємо все на
{% if upc > 0 %}
<li>
Ціна м2: {{ price }}
Упаковка: {{ price * upc }} В Упаковці: {{ upc }}<br>
<form name="form1" method="post" action="" class="calc">
Вкажіть Вашу площу м2: <input type="text" name="num1" id="num1" />
<br>
<input type="text" name="num2" value="{{ upc }}" id="num2" class="hidden-lg" /> ;
<br>
</li>
{% else %}
<li>
Ціна: {{ price }}
</li>
{% endif %}
У результаті якщо у нас є запис у полі upc, то виводиться блок з розрахунком, який дозволяє користувачеві ввести свою квадратуру.
Далі слід у цьому ж файлі додати скрипт десь у самому низу.
{% if upc %}
<script>
$(document).ready(function() {
//this calculates values automatically
sum();
$("#num1, #num2").on("keydown keyup", function() {
sum();
});
});
function sum() {
var num1 = document.getElementById('num1').value;
var num2 = document.getElementById('num2').value;
var result = parseInt(num1) / parseInt(num2) | 0;
var result1 = parseInt(num2) - parseInt(num1);
if (!isNaN(result)) {
document.getElementById('input-quantity').value = result;
}
}
</script>
{% endif %}
Даний скрипт робить розрахунок і передає значення в поле кількість, в результаті ми отримуємо відразу потрібну кількість.
Все, що тут наведено, є робочим рішенням, перевірено. Зроблено воно дуже швидко швидше за все в синтаксисі має помилки. Також якщо будуть використовуватися знижки, можливо (швидше за все) потрібні будуть редагування в коді. Але для людини, яка більш-менш розбирається, дане рішення дозволить дійсно створювати калькулятор OpenCart дуже швидко і при цьому, не витратившись на марні доповнення, які вимагають доробок для коректної роботи.
Ви можете замовити індивідуальну розробку рішення, будь-якого калькулятора вартості товарів, вартість послуг від 5000 грн. Все працює – ваш бізнес процвітає.
Створення інтернет-магазину | Сайт візитка | Landing Page | Розробка сайту компанії | Просування
Ілля Проскуряков
(068) 907 7688
(Viber, Whatsapp, Telegram)
Ще послуги: Фотограф Київ | фото та відео Київ
Карта | Політика конфіденційності | Блог
Усі авторські проєкти та послуги котрі можуть вас зацікавити: Каталог сайтів | Статті та каталог веб студій | Статті та каталог будівельної тематики | Статті та каталог магазинів техніки | Статті та каталог автотематика | Biz.net.ua