Калькулятор ламінату OpenCart 3 - робимо супер калькулятор своїми руками

В OpenCart 3 немає вбудованої калькуляції ціни, тільки від кількості. Але якщо у нас є упаковка і нам потрібно вказати кількість в упаковці, що дорівнює дробовому, але при цьому замовлення має бути саме упаковками. Приклад ламінат чи цукерки, інший товар. У коробці 3,6 квадратних метрів, нам потрібно 10 коробок. Зіткнувся з такою проблемою, що навіть калькулятори для OpenCart які продаються за ціною від 50-100 $ у результаті в кошик передають тільки дробове значення, а не ціле значення, тобто кількість потрібних коробок. І розробники доповнення кажуть, що потрібно все доопрацьовувати і винен сам OpenCart його алгоритми. Для коректної правильної логічної роботи вимагає доопрацювання ще за додаткову вартість + до ліцензії.

У результаті все як у приказці – якщо щось хочеш зробити добре – роби це сам!

Робимо супер калькулятор OpenCart, саме ocStore 3.0.2.0

калькулятор 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 грн. Все працює – ваш бізнес процвітає.