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 Demanoco
      Здравствуйте, при восстановлении через "Управление резервной копией" бекапа БД пропала начинка всех "HTML Содержимое" и других модулей. В самом бекапе начинка есть. При восстановлении через сайт ничего не восстанавливается... В чем может быть проблема и как ее решить?
    • 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 markimax
      Данный фикс (из разряда must have) убирает грубую SEO ошибку проверки входящих данных
      Из-за чего получаются дубли страниц с разными URL и разными canonical но одним содержимым
      Что очень негативно отражается на SEO
      В индекс попадают страницы с такими URL
      site.com/index.php?route=product/product&product_id=1/ (слеш в конце)
      или
      site.com/index.php?route=product/product&product_id=1.111
      или
      site.com/apple/?page=2///
       
      Фикс исправляет эту ошибку
       
      Инструкция по установке

      1. Скачать архив модуля
      2. Установите через установщик дополнений или скопируйте по FTP файлы из архива (содержимое папки upload) в корневую папку сайта (там где index.php). (если вы копируете первый раз, система не должна запрашивать файлы на перезапись, так как модуль не перезаписывает никаких системных файлов opencart и ocStore).
      3. Установите права доступа в /admin/index.php?route=user/user_permission для Главного администратора нажав на ссылку "изменить"
      4. Выделите "Разрешен просмотр" и "Разрешено внесение изменений" файлов модуля (если вы не знаете какие - нажмите ссылку "выделить всё") и нажмите кнопку "Сохранить"
      5. Если ваша версия opencart ниже чем 2.1 удалите по FTP папку module в /admin/controller/extension/ (т. е. удалите папку /admin/controller/extension/module), так как вы не сможете зайти в меню Модули
      6. Зайдите в административную часть сайта /admin/index.php?route=extension/module и установите модуль, нажав на ссылку "установить"
      7. Зайдите в модуль /admin/index.php?route=module/datafix и нажмите оранжевую кнопку "Нажмите при установке или обновлении модуля". Будут установлены и обновлены модификаторы модуля.
      8. "Статус модуля" - выберите "Включено". Нажмите кнопку справа вверху "Сохранить"
      9. Процедура установки и включения модуля закончена.
       
      Модуль распространяется по принципу "as is"
       
       
       
    • By markimax
      Скачать/Купить дополнение


      SEO DATAFIX
      Данный фикс (из разряда must have) убирает грубую SEO ошибку проверки входящих данных
      Из-за чего получаются дубли страниц с разными URL и разными canonical но одним содержимым
      Что очень негативно отражается на SEO
      В индекс попадают страницы с такими URL
      site.com/index.php?route=product/product&product_id=1/ (слеш в конце)
      или
      site.com/index.php?route=product/product&product_id=1.111
      или
      site.com/apple/?page=2///
       
      Фикс исправляет эту ошибку
       
      Инструкция по установке

      1. Скачать архив модуля
      2. Установите через установщик дополнений или скопируйте по FTP файлы из архива (содержимое папки upload) в корневую папку сайта (там где index.php). (если вы копируете первый раз, система не должна запрашивать файлы на перезапись, так как модуль не перезаписывает никаких системных файлов opencart и ocStore).
      3. Установите права доступа в /admin/index.php?route=user/user_permission для Главного администратора нажав на ссылку "изменить"
      4. Выделите "Разрешен просмотр" и "Разрешено внесение изменений" файлов модуля (если вы не знаете какие - нажмите ссылку "выделить всё") и нажмите кнопку "Сохранить"
      5. Если ваша версия opencart ниже чем 2.1 удалите по FTP папку module в /admin/controller/extension/ (т. е. удалите папку /admin/controller/extension/module), так как вы не сможете зайти в меню Модули
      6. Зайдите в административную часть сайта /admin/index.php?route=extension/module и установите модуль, нажав на ссылку "установить"
      7. Зайдите в модуль /admin/index.php?route=module/datafix и нажмите оранжевую кнопку "Нажмите при установке или обновлении модуля". Будут установлены и обновлены модификаторы модуля.
      8. "Статус модуля" - выберите "Включено". Нажмите кнопку справа вверху "Сохранить"
      9. Процедура установки и включения модуля закончена.
       
      Модуль распространяется по принципу "as is"
       
       
       
      Добавил markimax Добавлено 30.03.2018 Категория SEO, карта сайта, оптимизация Системные требования PHP 5.3+, для OC 1.5.x - vqmod 2.4.0+ Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Нет Старая цена 0  
  • 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.