Jump to content
AliyaMuzZa

Ошибка при изменении количества товара в окне заказа

Recommended Posts

Добрый день! Помогите, пожалуйста, с ошибкой!

Добавляю товар в корзину, открывается окно с товаром (корзина).

1062320660_.png.6ca1d9f8338f8c9135e6e294a90beab7.png

 

Если тут менять количество товара, то вылазит окно с уведомлением от сайта. Содержание такое:

758379519_.png.dbc9f5e9c946202c235c2c15d476a4e8.png

 

Нажимаешь "Закрыть", количество и сумма меняется как надо.

 

1. Часть ошибок из журнала ошибок в админке, которые повторяются:

Спойлер

2020-09-16 21:41:22 - PHP Notice:  Undefined variable: key in /var/www/222/data/www/mysite.ru/system/storage/modification/catalog/controller/checkout/cart.php on line 480
2020-09-16 21:41:22 - PHP Notice:  Undefined variable: key in /var/www/222/data/www/mysite.ru/system/storage/modification/catalog/controller/checkout/cart.php on line 484
2020-09-16 21:41:22 - PHP Notice:  Undefined variable: key in /var/www/222/data/www/mysite.ru/system/storage/modification/catalog/controller/checkout/cart.php on line 484
2020-09-16 21:41:22 - PHP Notice:  Undefined variable: key in /var/www/222/data/www/mysite.ru/system/storage/modification/catalog/controller/checkout/cart.php on line 484
2020-09-16 21:41:22 - PHP Notice:  Undefined variable: value in /var/www/222/data/www/mysite.ru/system/storage/modification/catalog/controller/checkout/cart.php on line 497
2020-09-16 21:41:32 - PHP Notice:  Undefined variable: modern_top_link3 in /var/www/222/data/www/mysite.ru/catalog/view/theme/modern/template/common/aridiusscroll_menu.tpl on line 266

 

2. cart.php

Спойлер

<?php
class ControllerCheckoutCart extends Controller {
    public function index() {
        $this->load->language('checkout/cart');

        $this->document->setTitle($this->language->get('heading_title'));

        $data['breadcrumbs'] = array();

        $data['breadcrumbs'][] = array(
            'href' => $this->url->link('common/home'),
            'text' => $this->language->get('text_home')
        );

        $data['breadcrumbs'][] = array(
            'href' => $this->url->link('checkout/cart'),
            'text' => $this->language->get('heading_title')
        );

        if ($this->cart->hasProducts() || !empty($this->session->data['vouchers'])) {
            $data['heading_title'] = $this->language->get('heading_title');

            $data['text_recurring_item'] = $this->language->get('text_recurring_item');
            $data['text_next'] = $this->language->get('text_next');
            $data['text_next_choice'] = $this->language->get('text_next_choice');

            $data['column_image'] = $this->language->get('column_image');
            $data['column_name'] = $this->language->get('column_name');
            $data['column_model'] = $this->language->get('column_model');
            $data['column_quantity'] = $this->language->get('column_quantity');
            $data['column_price'] = $this->language->get('column_price');
            $data['column_total'] = $this->language->get('column_total');

            $data['button_update'] = $this->language->get('button_update');
            $data['button_remove'] = $this->language->get('button_remove');
            $data['button_shopping'] = $this->language->get('button_shopping');
            $data['button_checkout'] = $this->language->get('button_checkout');

            if (!$this->cart->hasStock() && (!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning'))) {
                $data['error_warning'] = $this->language->get('error_stock');
            } elseif (isset($this->session->data['error'])) {
                $data['error_warning'] = $this->session->data['error'];

                unset($this->session->data['error']);
            } else {
                $data['error_warning'] = '';
            }

            if ($this->config->get('config_customer_price') && !$this->customer->isLogged()) {
                $data['attention'] = sprintf($this->language->get('text_login'), $this->url->link('account/login'), $this->url->link('account/register'));
            } else {
                $data['attention'] = '';
            }

            if (isset($this->session->data['success'])) {
                $data['success'] = $this->session->data['success'];

                unset($this->session->data['success']);
            } else {
                $data['success'] = '';
            }

            $data['action'] = $this->url->link('checkout/cart/edit', '', true);

            if ($this->config->get('config_cart_weight')) {
                $data['weight'] = $this->weight->format($this->cart->getWeight(), $this->config->get('config_weight_class_id'), $this->language->get('decimal_point'), $this->language->get('thousand_point'));
            } else {
                $data['weight'] = '';
            }

            $this->load->model('tool/image');
            $this->load->model('tool/upload');

            $data['products'] = array();

            $products = $this->cart->getProducts();

            foreach ($products as $product) {
                $product_total = 0;

                foreach ($products as $product_2) {
                    if ($product_2['product_id'] == $product['product_id']) {
                        $product_total += $product_2['quantity'];
                    }
                }

                if ($product['minimum'] > $product_total) {
                    $data['error_warning'] = sprintf($this->language->get('error_minimum'), $product['name'], $product['minimum']);
                }

                if ($product['image']) {
                    $image = $this->model_tool_image->resize($product['image'], $this->config->get($this->config->get('config_theme') . '_image_cart_width'), $this->config->get($this->config->get('config_theme') . '_image_cart_height'));
                } else {
                    $image = '';
                }

                $option_data = array();

                foreach ($product['option'] as $option) {
                    if ($option['type'] != 'file') {
                        $value = $option['value'];
                    } else {
$copu_products = $this->config->get('copu_products');
                if($copu_products && !empty($copu_products)) {
                    foreach($copu_products as $copu_product) {
                        if($copu_product['status'] && isset($copu_product['options']) && !empty($copu_product['options']) && in_array($option['option_id'], $copu_product['options']) && isset($copu_product['stores']) && !empty($copu_product['stores']) && in_array($this->config->get('config_store_id'), $copu_product['stores'])) {
                            $upload_info = $this->model_tool_upload->getUploadByCode($option['value']);
                            if($upload_info && file_exists(DIR_UPLOAD . $upload_info['filename']) && filesize(DIR_UPLOAD . $upload_info['filename']) && $copu_product['replace']) {
                                 $imageinfo = @getimagesize(DIR_UPLOAD . $upload_info['filename']);
                                if($imageinfo[2] > 0 && $imageinfo[2] < 4) {
                                    $random_str = md5($option['value']);
                                    copy(DIR_UPLOAD . $upload_info['filename'], DIR_IMAGE . $random_str . $upload_info['name']);
                                     $image = $this->model_tool_image->resize($random_str . $upload_info['name'], $this->config->get($this->config->get('config_theme') . '_image_cart_width'), $this->config->get($this->config->get('config_theme') . '_image_cart_height'));
                                     unlink(DIR_IMAGE . $random_str . $upload_info['name']);
                                }
                            }
                            continue 2;
                        }
                    }
                }
                        $upload_info = $this->model_tool_upload->getUploadByCode($option['value']);

                        if ($upload_info) {
                            $value = $upload_info['name'];
                        } else {
                            $value = '';
                        }
                    }

                    $option_data[] = array(
                        'name'  => $option['name'],
                        'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)
                    );
                }

                // Display prices
                if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
                    $unit_price = $this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax'));
                    
                    $price = $this->currency->format($unit_price, $this->session->data['currency']);
                    $total = $this->currency->format($unit_price * $product['quantity'], $this->session->data['currency']);
                } else {
                    $price = false;
                    $total = false;
                }

                $recurring = '';

                if ($product['recurring']) {
                    $frequencies = array(
                        'day'        => $this->language->get('text_day'),
                        'week'       => $this->language->get('text_week'),
                        'semi_month' => $this->language->get('text_semi_month'),
                        'month'      => $this->language->get('text_month'),
                        'year'       => $this->language->get('text_year'),
                    );

                    if ($product['recurring']['trial']) {
                        $recurring = sprintf($this->language->get('text_trial_description'), $this->currency->format($this->tax->calculate($product['recurring']['trial_price'] * $product['quantity'], $product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']), $product['recurring']['trial_cycle'], $frequencies[$product['recurring']['trial_frequency']], $product['recurring']['trial_duration']) . ' ';
                    }

                    if ($product['recurring']['duration']) {
                        $recurring .= sprintf($this->language->get('text_payment_description'), $this->currency->format($this->tax->calculate($product['recurring']['price'] * $product['quantity'], $product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']), $product['recurring']['cycle'], $frequencies[$product['recurring']['frequency']], $product['recurring']['duration']);
                    } else {
                        $recurring .= sprintf($this->language->get('text_payment_cancel'), $this->currency->format($this->tax->calculate($product['recurring']['price'] * $product['quantity'], $product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']), $product['recurring']['cycle'], $frequencies[$product['recurring']['frequency']], $product['recurring']['duration']);
                    }
                }

if(isset($product['key'])) {
                        $key = $product['key'];
                    } else if(isset($result['key'])) {
                        $key = $result['key'];
                    } else if(isset($product['cart_id'])) {
                        $key = $product['cart_id'];
                    }
                    $data['copu_cart'][$key] = $this->load->controller('myoc/copu/cart', array('key' => $key));
                $data['products'][] = array(
                    'cart_id'   => $product['cart_id'],
                    'thumb'     => $image,
                    'name'      => $product['name'],
                    'model'     => $product['model'],
                    'option'    => $option_data,
                    'recurring' => $recurring,
                    'quantity'  => $product['quantity'],
                    'stock'     => $product['stock'] ? true : !(!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning')),
                    'reward'    => ($product['reward'] ? sprintf($this->language->get('text_points'), $product['reward']) : ''),
                    'price'     => $price,
                    'total'     => $total,
                    'href'      => $this->url->link('product/product', 'product_id=' . $product['product_id'])
                );
            }

            // Gift Voucher
            $data['vouchers'] = array();

            if (!empty($this->session->data['vouchers'])) {
                foreach ($this->session->data['vouchers'] as $key => $voucher) {
                    $data['vouchers'][] = array(
                        'key'         => $key,
                        'description' => $voucher['description'],
                        'amount'      => $this->currency->format($voucher['amount'], $this->session->data['currency']),
                        'remove'      => $this->url->link('checkout/cart', 'remove=' . $key)
                    );
                }
            }

            // Totals
            $this->load->model('extension/extension');

            $totals = array();
            $taxes = $this->cart->getTaxes();
            $total = 0;
            
            // Because __call can not keep var references so we put them into an array.             
            $total_data = array(
                'totals' => &$totals,
                'taxes'  => &$taxes,
                'total'  => &$total
            );
            
            // Display prices
            if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
                $sort_order = array();

                $results = $this->model_extension_extension->getExtensions('total');

                foreach ($results as $key => $value) {
                    $sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
                }

                array_multisort($sort_order, SORT_ASC, $results);

                foreach ($results as $result) {
                    if ($this->config->get($result['code'] . '_status')) {
                        $this->load->model('extension/total/' . $result['code']);
                        
                        // We have to put the totals in an array so that they pass by reference.
                        $this->{'model_extension_total_' . $result['code']}->getTotal($total_data);
                    }
                }

                $sort_order = array();

                foreach ($totals as $key => $value) {
                    $sort_order[$key] = $value['sort_order'];
                }

                array_multisort($sort_order, SORT_ASC, $totals);
            }

            $data['totals'] = array();

            foreach ($totals as $total) {
                $data['totals'][] = array(
                    'title' => $total['title'],
                    'text'  => $this->currency->format($total['value'], $this->session->data['currency'])
                );
            }

            $data['continue'] = $this->url->link('common/home');

            $data['checkout'] = $this->url->link('checkout/checkout', '', true);

            $this->load->model('extension/extension');

            $data['modules'] = array();
            
            $files = glob(DIR_APPLICATION . '/controller/extension/total/*.php');

            if ($files) {
                foreach ($files as $file) {
                    $result = $this->load->controller('extension/total/' . basename($file, '.php'));
                    
                    if ($result) {
                        $data['modules'][] = $result;
                    }
                }
            }

$data['copu_order'] = $this->load->controller('myoc/copu', array('type' => 'order', 'path' => 'cart'));
            $data['column_left'] = $this->load->controller('common/column_left');
            $data['column_right'] = $this->load->controller('common/column_right');
            $data['content_top'] = $this->load->controller('common/content_top');
            $data['content_bottom'] = $this->load->controller('common/content_bottom');
            $data['footer'] = $this->load->controller('common/footer');
            $data['header'] = $this->load->controller('common/header');

            $this->response->setOutput($this->load->view('checkout/cart', $data));
        } else {
            $data['heading_title'] = $this->language->get('heading_title');

            $data['text_error'] = $this->language->get('text_empty');

            $data['button_continue'] = $this->language->get('button_continue');

            $data['continue'] = $this->url->link('common/home');

            unset($this->session->data['success']);

            $data['column_left'] = $this->load->controller('common/column_left');
            $data['column_right'] = $this->load->controller('common/column_right');
            $data['content_top'] = $this->load->controller('common/content_top');
            $data['content_bottom'] = $this->load->controller('common/content_bottom');
            $data['footer'] = $this->load->controller('common/footer');
            $data['header'] = $this->load->controller('common/header');

            $this->response->setOutput($this->load->view('error/not_found', $data));
        }
    }

    public function add() {
        $this->load->language('checkout/cart');

        $json = array();

        if (isset($this->request->post['product_id'])) {
            $product_id = (int)$this->request->post['product_id'];
        } else {
            $product_id = 0;
        }

        $this->load->model('catalog/product');

        $product_info = $this->model_catalog_product->getProduct($product_id);

        if ($product_info) {
            if (isset($this->request->post['quantity']) && ((int)$this->request->post['quantity'] >= $product_info['minimum'])) {
                $quantity = (int)$this->request->post['quantity'];
            } else {
                $quantity = $product_info['minimum'] ? $product_info['minimum'] : 1;
            }

            if (isset($this->request->post['option'])) {
                $option = array_filter($this->request->post['option']);
            } else {
                $option = array();
            }

            $product_options = $this->model_catalog_product->getProductOptions($this->request->post['product_id']);

            foreach ($product_options as $product_option) {
$copu_products = $this->config->get('copu_products');
                if($product_option['type'] == 'file' && isset($this->request->post['copu_product_id'][$product_option['product_option_id']]) && $copu_products) {
                    foreach($copu_products as $copu_product) {
                        if($copu_product['copu_product_id'] == $this->request->post['copu_product_id'][$product_option['product_option_id']] && $copu_product['status'] && isset($copu_product['stores']) && !empty($copu_product['stores']) && in_array($this->config->get('config_store_id'), $copu_product['stores']) && isset($copu_product['options']) && !empty($copu_product['options']) && in_array($product_option['option_id'], $copu_product['options'])) {
                            $product_id = isset($this->request->post['product_id']) ? $this->request->post['product_id'] : $product_id;
                            if($copu_product['minimum'] && (!isset($this->session->data['copu_product_uploads'][$product_id][$product_option['product_option_id']]) || count($this->session->data['copu_product_uploads'][$product_id][$product_option['product_option_id']]) < $copu_product['minimum'])) {
                                $this->load->language('myoc/copu');
                                $json['error'][$product_option['product_option_id']] = $json['error']['option'][$product_option['product_option_id']] = sprintf($this->language->get('error_upload_minimum'), $copu_product['minimum']);
                            }
                            if(isset($this->session->data['copu_product_uploads'][$product_id][$product_option['product_option_id']])) {
                                $option[$product_option['product_option_id']] = $this->session->data['copu_product_uploads'][$product_id][$product_option['product_option_id']];
                            }
                            $product_option['required'] = false;
                        }
                    }
                }
                if ($product_option['required'] && empty($option[$product_option['product_option_id']])) {
                    $json['error']['option'][$product_option['product_option_id']] = sprintf($this->language->get('error_required'), $product_option['name']);
                }
            }

            if (isset($this->request->post['recurring_id'])) {
                $recurring_id = $this->request->post['recurring_id'];
            } else {
                $recurring_id = 0;
            }

            $recurrings = $this->model_catalog_product->getProfiles($product_info['product_id']);

            if ($recurrings) {
                $recurring_ids = array();

                foreach ($recurrings as $recurring) {
                    $recurring_ids[] = $recurring['recurring_id'];
                }

                if (!in_array($recurring_id, $recurring_ids)) {
                    $json['error']['recurring'] = $this->language->get('error_recurring_required');
                }
            }


                    $this->load->model('tool/image');
      
            if (!$json) {
$copu_products = $this->config->get('copu_products');
                if($copu_products && !empty($copu_products) && isset($this->request->post['copu_product_id'])) {
                    $force_qty = 0;
                    foreach($copu_products as $copu_product) {
                        foreach($option as $product_option_id => $option_data) {
                            if(isset($this->request->post['copu_product_id'][$product_option_id]) && $copu_product['copu_product_id'] == $this->request->post['copu_product_id'][$product_option_id] && $copu_product['status'] && $copu_product['force_qty'] && isset($copu_product['stores']) && !empty($copu_product['stores']) && in_array($this->config->get('config_store_id'), $copu_product['stores']) && isset($this->session->data['copu_product_uploads'][$this->request->post['product_id']]) && isset($this->session->data['copu_product_uploads'][$this->request->post['product_id']][$product_option_id])) {
                                $force_qty += count($this->session->data['copu_product_uploads'][$this->request->post['product_id']][$product_option_id]);
                            }
                        }
                        $quantity = $force_qty ? $force_qty : $quantity;
                    }
                }
                $this->cart->add($this->request->post['product_id'], $quantity, $option, $recurring_id);
if(isset($this->session->data['copu_product_uploads'][$this->request->post['product_id']])) {
                    unset($this->session->data['copu_product_uploads'][$this->request->post['product_id']]);
                }

                
                    $json['success'] = sprintf($this->language->get('text_success'), $this->model_tool_image->resize($product_info['image'], '80', '80'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));
      

                // Unset all shipping and payment methods
                unset($this->session->data['shipping_method']);
                unset($this->session->data['shipping_methods']);
                unset($this->session->data['payment_method']);
                unset($this->session->data['payment_methods']);

                // Totals
                $this->load->model('extension/extension');

                $totals = array();
                $taxes = $this->cart->getTaxes();
                $total = 0;
        
                // Because __call can not keep var references so we put them into an array.             
                $total_data = array(
                    'totals' => &$totals,
                    'taxes'  => &$taxes,
                    'total'  => &$total
                );

                // Display prices
                if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
                    $sort_order = array();

                    $results = $this->model_extension_extension->getExtensions('total');

                    foreach ($results as $key => $value) {
                        $sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
                    }

                    array_multisort($sort_order, SORT_ASC, $results);

                    foreach ($results as $result) {
                        if ($this->config->get($result['code'] . '_status')) {
                            $this->load->model('extension/total/' . $result['code']);

                            // We have to put the totals in an array so that they pass by reference.
                            $this->{'model_extension_total_' . $result['code']}->getTotal($total_data);
                        }
                    }

                    $sort_order = array();

                    foreach ($totals as $key => $value) {
                        $sort_order[$key] = $value['sort_order'];
                    }

                    array_multisort($sort_order, SORT_ASC, $totals);
                }

                $json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency']));
            } else {
                $json['redirect'] = str_replace('&amp;', '&', $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']));
            }
        }

        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }


      public function edit_aridiuscart() {
        $this->load->language('checkout/cart');

        $json = array();

        // Update
$cart_products = $this->cart->getProducts();
                $copu_products = $this->config->get('copu_products');
                if($copu_products && !empty($copu_products)) {
                    $force_qty = 0;
                    $cart_options = array();
                    if(isset($cart_products[$key]['option'])) {
                        $cart_options = $cart_products[$key]['option'];
                    } else {
                        foreach($cart_products as $cart_product) {
                            if($cart_product['cart_id'] == $key) {
                                $cart_options = $cart_product['option'];
                                break;
                            }
                        }
                    }
                    foreach($cart_options as $option_data) {
                        foreach($copu_products as $copu_product) {
                            if($copu_product['status'] && $copu_product['force_qty'] && isset($copu_product['stores']) && !empty($copu_product['stores']) && in_array($this->config->get('config_store_id'), $copu_product['stores']) && isset($copu_product['options']) && !empty($copu_product['options']) && in_array($option_data['option_id'], $copu_product['options']) && $option_data['type'] == 'file' && !empty($option_data['value'])) {
                                $force_qty++;
                            }
                        }
                    }
                    $value = $force_qty ? $force_qty : $value;
                }
        $this->cart->update($this->request->post['key'], $this->request->post['quantity']);
            

            $this->session->data['success'] = $this->language->get('text_remove');

            unset($this->session->data['shipping_method']);
            unset($this->session->data['shipping_methods']);
            unset($this->session->data['payment_method']);
            unset($this->session->data['payment_methods']);
            unset($this->session->data['reward']);
            
                    
            // Totals
            $this->load->model('extension/extension');

            $totals = array();
            $taxes = $this->cart->getTaxes();
            $total = 0;

            // Because __call can not keep var references so we put them into an array.             
            $total_data = array(
                'totals' => &$totals,
                'taxes'  => &$taxes,
                'total'  => &$total
            );
            // Display prices
            if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
                $sort_order = array();

                $results = $this->model_extension_extension->getExtensions('total');

                foreach ($results as $key => $value) {
                    $sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
                }

                array_multisort($sort_order, SORT_ASC, $results);

                foreach ($results as $result) {
                    if ($this->config->get($result['code'] . '_status')) {
                        $this->load->model('extension/total/' . $result['code']);

                        // We have to put the totals in an array so that they pass by reference.
                        $this->{'model_extension_total_' . $result['code']}->getTotal($total_data);
                    }
                }

                $sort_order = array();

                foreach ($totals as $key => $value) {
                    $sort_order[$key] = $value['sort_order'];
                }

                array_multisort($sort_order, SORT_ASC, $totals);
            }

            
            $json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency']));
        

        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }
      
    public function edit() {
        $this->load->language('checkout/cart');

        $json = array();

        // Update
        if (!empty($this->request->post['quantity'])) {
            foreach ($this->request->post['quantity'] as $key => $value) {
$cart_products = $this->cart->getProducts();
                $copu_products = $this->config->get('copu_products');
                if($copu_products && !empty($copu_products)) {
                    $force_qty = 0;
                    $cart_options = array();
                    if(isset($cart_products[$key]['option'])) {
                        $cart_options = $cart_products[$key]['option'];
                    } else {
                        foreach($cart_products as $cart_product) {
                            if($cart_product['cart_id'] == $key) {
                                $cart_options = $cart_product['option'];
                                break;
                            }
                        }
                    }
                    foreach($cart_options as $option_data) {
                        foreach($copu_products as $copu_product) {
                            if($copu_product['status'] && $copu_product['force_qty'] && isset($copu_product['stores']) && !empty($copu_product['stores']) && in_array($this->config->get('config_store_id'), $copu_product['stores']) && isset($copu_product['options']) && !empty($copu_product['options']) && in_array($option_data['option_id'], $copu_product['options']) && $option_data['type'] == 'file' && !empty($option_data['value'])) {
                                $force_qty++;
                            }
                        }
                    }
                    $value = $force_qty ? $force_qty : $value;
                }
                $this->cart->update($key, $value);
            }

            $this->session->data['success'] = $this->language->get('text_remove');

            unset($this->session->data['shipping_method']);
            unset($this->session->data['shipping_methods']);
            unset($this->session->data['payment_method']);
            unset($this->session->data['payment_methods']);
            unset($this->session->data['reward']);

            $this->response->redirect($this->url->link('checkout/cart'));
        }

        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }

    public function remove() {
        $this->load->language('checkout/cart');

        $json = array();

        // Remove
        if (isset($this->request->post['key'])) {
            $this->cart->remove($this->request->post['key']);

            unset($this->session->data['vouchers'][$this->request->post['key']]);

            $json['success'] = $this->language->get('text_remove');

            unset($this->session->data['shipping_method']);
            unset($this->session->data['shipping_methods']);
            unset($this->session->data['payment_method']);
            unset($this->session->data['payment_methods']);
            unset($this->session->data['reward']);

            // Totals
            $this->load->model('extension/extension');

            $totals = array();
            $taxes = $this->cart->getTaxes();
            $total = 0;

            // Because __call can not keep var references so we put them into an array.             
            $total_data = array(
                'totals' => &$totals,
                'taxes'  => &$taxes,
                'total'  => &$total
            );

            // Display prices
            if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
                $sort_order = array();

                $results = $this->model_extension_extension->getExtensions('total');

                foreach ($results as $key => $value) {
                    $sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
                }

                array_multisort($sort_order, SORT_ASC, $results);

                foreach ($results as $result) {
                    if ($this->config->get($result['code'] . '_status')) {
                        $this->load->model('extension/total/' . $result['code']);

                        // We have to put the totals in an array so that they pass by reference.
                        $this->{'model_extension_total_' . $result['code']}->getTotal($total_data);
                    }
                }

                $sort_order = array();

                foreach ($totals as $key => $value) {
                    $sort_order[$key] = $value['sort_order'];
                }

                array_multisort($sort_order, SORT_ASC, $totals);
            }

            $json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total, $this->session->data['currency']));
        }

        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }
}
 

 

Edited by AliyaMuzZa

Share this post


Link to post
Share on other sites

ну, все ж написано

Share this post


Link to post
Share on other sites
8 минут назад, spectre сказал:

ну, все ж написано

Да, понимать бы только что именно не так. Поэтому и выложила здесь в надежде, что кто-нибудь подскажет, где и что править. Вы подскажете?:-)

Share this post


Link to post
Share on other sites

пoчему не обратитесь к разработчику шаблона? 

Share this post


Link to post
Share on other sites
13 часов назад, Vetroff сказал:

пoчему не обратитесь к разработчику шаблона? 

Обращалась. Он говорит, что причина в модуле или движке. Все таки шаблон? Сейчас напишу ему еще раз.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By chukcha
      Повернуться лицом к пользователям, не бояться признавать своих ошибок, проверить лояльность пользователя к магазину - задача этого модуля.
      Идея, естественно, не нова, даже совсем не нова, одним из первых этот сервис поднял Orfus. Затем появилось много подобных клонов, и Orfus вел с ними войну. Минус использования системы от Orfus'а - регистрация на сервисе, и использование скрипта с их серверов.
      Силами данного модуль отмеченная(выделенная) ошибка отправляется на почту админа сайта и регистрирует ее в базе.
      В случае появления сообщения, в админке появится значок-уведомление. и администратор принимает решение о судьбе ошибки.
      История ошибок хранится в базе.
      Если ошибку обнаружил зарегистрированный пользователь, то информация об этом пользователе сохраняется.
      Это говорит о лояльности и доверии пользователя к магазину. А магазин, в свою очередь, так же может принять решение о поощрении покупателя.
      Совместимость: должно работать на всех версиях (1.5.x), не используется каких либо особых специфических функций движка.
      Требует Vqmod,для 1.5 ручная установка не представляет сложности
      Demo:
      http://demo.slasoft.kharkov.ua
      http://demo.slasoft.kharkov.ua/admin demo/demo
      В сборке русский язык для админки, русский и украинский для магазина
       
    • By chukcha
      300.00 руб
      Скачать/Купить дополнение


      Нашли ошибку жми Ctrl+Enter
      Повернуться лицом к пользователям, не бояться признавать своих ошибок, проверить лояльность пользователя к магазину - задача этого модуля.
      Идея, естественно, не нова, даже совсем не нова, одним из первых этот сервис поднял Orfus. Затем появилось много подобных клонов, и Orfus вел с ними войну. Минус использования системы от Orfus'а - регистрация на сервисе, и использование скрипта с их серверов.
      Силами данного модуль отмеченная(выделенная) ошибка отправляется на почту админа сайта и регистрирует ее в базе.
      В случае появления сообщения, в админке появится значок-уведомление. и администратор принимает решение о судьбе ошибки.
      История ошибок хранится в базе.
      Если ошибку обнаружил зарегистрированный пользователь, то информация об этом пользователе сохраняется.
      Это говорит о лояльности и доверии пользователя к магазину. А магазин, в свою очередь, так же может принять решение о поощрении покупателя.
      Совместимость: должно работать на всех версиях (1.5.x), не используется каких либо особых специфических функций движка.
      Требует Vqmod,для 1.5 ручная установка не представляет сложности
      Demo:
      http://demo.slasoft.kharkov.ua
      http://demo.slasoft.kharkov.ua/admin demo/demo
      В сборке русский язык для админки, русский и украинский для магазина
       
      Добавил chukcha Добавлено 22.09.2014 Категория Прочее Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.1 ocStore 3.0
      2.3
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Нет Старая цена 0  
    • By Leingard
      Модуль для обнаружения и последующего решения ошибок и проблем Ваших покупателей. Используя модуль, Вы сможете найти проблемные места Вашего сайта с которыми сталкиваются покупатели. Ошибка 404 - теперь не загадка. Вы будете знать где, когда и как покупатель вышел на отсутствующую страницу или подозрительный запрос.
       
      Обнаружение битых ссылок в поисковой системе на Ваш сайт, так же можно обнаружить при помощи модуля.  
       
      DEMO: OC 3: http://oc30.gameshara.ru/
      DEMO: OC 2.3: http://gameshara.ru/module/
      DEMO: OC 2.1: http://gameshara.ru/ocstore21/
      Админ часть: Admin (Логин и пароль: demo)
       
      Возможности модуля:
      Посещение покупателями страниц с ошибокой 404 Вашего магазина. Откуда перешел и когда. Битые товары которые до сих пор отображаются в поисковой системе или на сайте. При заходе на такие, Вы увидите отчёт. Ошибки категорий или старые категории которые нужно убрать (а посетитель их видит). При посещение таких покупателями, Вы увидите. Старые или отсутствующие производители по которым прошелся пользователь. Отображение IP адресов Подозрительные запросы так же будут отображены в отчёте.  
      Инструкция в архиве.
       
      Лицензия:
      Модуль продается с лицензией на сайт. Одна покупка = Один домен Покупая копию модуля вы получаете право на использование. Распространения модуль платно или бесплатно нарушает лицензию и грозит обнулением покупки, а так же уголовной ответственность предусмотренной статей 146 УК РФ (Нарушение авторских и смежных прав)  Автор оставляет за собой право изменят условия предоставления лицензии, изменения цены и стоков продления лицензии. Все доработки, переработки и изменения функционала не входят в стоимость модуля и оплачиваются отдельно по письменной договоренности с автором.  
      Тип распространения:
      Как есть
    • By Leingard
      450.00 руб
      Скачать/Купить дополнение


      CrashReport - отчет о проблемах сайта
      Модуль для обнаружения и последующего решения ошибок и проблем Ваших покупателей. Используя модуль, Вы сможете найти проблемные места Вашего сайта с которыми сталкиваются покупатели. Ошибка 404 - теперь не загадка. Вы будете знать где, когда и как покупатель вышел на отсутствующую страницу или подозрительный запрос.
       
      Обнаружение битых ссылок в поисковой системе на Ваш сайт, так же можно обнаружить при помощи модуля.  
       
      DEMO: OC 3: http://oc30.gameshara.ru/
      DEMO: OC 2.3: http://gameshara.ru/module/
      DEMO: OC 2.1: http://gameshara.ru/ocstore21/
      Админ часть: Admin (Логин и пароль: demo)
       
      Возможности модуля:
      Посещение покупателями страниц с ошибокой 404 Вашего магазина. Откуда перешел и когда. Битые товары которые до сих пор отображаются в поисковой системе или на сайте. При заходе на такие, Вы увидите отчёт. Ошибки категорий или старые категории которые нужно убрать (а посетитель их видит). При посещение таких покупателями, Вы увидите. Старые или отсутствующие производители по которым прошелся пользователь. Отображение IP адресов Подозрительные запросы так же будут отображены в отчёте.  
      Инструкция в архиве.
       
      Лицензия:
      Модуль продается с лицензией на сайт. Одна покупка = Один домен Покупая копию модуля вы получаете право на использование. Распространения модуль платно или бесплатно нарушает лицензию и грозит обнулением покупки, а так же уголовной ответственность предусмотренной статей 146 УК РФ (Нарушение авторских и смежных прав)  Автор оставляет за собой право изменят условия предоставления лицензии, изменения цены и стоков продления лицензии. Все доработки, переработки и изменения функционала не входят в стоимость модуля и оплачиваются отдельно по письменной договоренности с автором.  
      Тип распространения:
      Как есть Добавил Leingard Добавлено 15.04.2019 Категория Отчеты Системные требования PHP 5.6+ Метод активации По запросу в ЛС
      По запросу на почту Ioncube Loader Нет OpenCart 3.0
      2.3
      2.1 ocStore 3.0
      2.3
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Да Старая цена 500  
    • By hardmonick
      Недавно обнаружил в некоторых категория товаров следующую ошибку Notice: unserialize(): Error at offset 9 of 50 bytes in /home/promar06/pro-mart.com.ua/www/system/storage/modification/catalog/controller/product/category.php on line 715. Может кто сталкивался с данной проблемой? Подскажите пожалуйста в какой стороне искать решение данной проблемы. Спасибо!

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.