Im в настоящее время работает на объекте opencart. Я написал пользовательскую калькуляцию цены php, в зависимости от того, какие параметры выбраны по порядку. Эта работа прекрасна, когда опции выбраны, радио с флажками. Но ..Расчет цены на Opencart, таможенный расчет
У меня есть опция, где клиент может вводить число с текстовым полем. Я использую это число в расчете цены, поэтому в зависимости от этого значения, opencart рассчитать цену. Я отправляю этот номер с помощью SESSION в system/library/cart.php, где я использую его для вычисления. Это работает отлично, когда заказ клиента только один раз.
Когда клиент уже имеет продукт в своей корзине и хочет сделать другой заказ, opencart перезапишет значение сеанса, и это будет пересчитывать цену за элемент, уже находящийся в корзине.
есть ли какой-либо хороший способ хранить отдельно эти значения сеанса?
Вот моя измененная система/библиотека/cart.php:
if ($product_id == '65') {
$pqty = $_SESSION['pqty'];
$contents = file_get_contents("http://somepage.com/system/library/calculate.php?&qty=".$quantity."&pqty=".$pqty."&pnh=".$pnh."&czp=".$czp."&czt=".$czt."&bnd=".$bnd."&covcho=".$covcho."&covczp=".$covczp."&covczt=".$covczt."&lam=".$lam);
$contents = utf8_encode($contents);
$calcprice = json_decode($contents);
$this->data[$key] = array(
'key' => $key,
'product_id' => $product_query->row['product_id'],
'name' => $product_query->row['name'],
'model' => $product_query->row['model'],
'shipping' => $product_query->row['shipping'],
'image' => $product_query->row['image'],
'option' => $option_data,
'download' => $download_data,
'quantity' => $quantity,
'minimum' => $product_query->row['minimum'],
'subtract' => $product_query->row['subtract'],
'stock' => $stock,
'price' => $calcprice/quantity,
'total' => $calcprice,
'reward' => $reward * $quantity,
'points' => ($product_query->row['points'] ? ($product_query->row['points'] + $option_points) * $quantity : 0),
'tax_class_id' => $product_query->row['tax_class_id'],
'weight' => ($product_query->row['weight'] + $option_weight) * $quantity,
'weight_class_id' => $product_query->row['weight_class_id'],
'length' => $product_query->row['length'],
'width' => $product_query->row['width'],
'height' => $product_query->row['height'],
'length_class_id' => $product_query->row['length_class_id'],
'recurring' => $recurring
);
Вы можете использовать массив и сохранить его в сеансе, чтобы сделать это. И этот массив должен иметь ключ uqniue, чтобы можно было вычислить его цену. $ this-> session-> data ['custom_price_multiplier'] [unique key] = 'customer input'' –
Я действительно не понимаю этот метод. Можете ли вы объяснить немного больше? – peszo