Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Ошибка в Админке (Дизайн-Схемы)


Recommended Posts

найдите модификатор, который затрагивает макеты и отклюлите

Link to comment
Share on other sites

Я ик понимаю, что проблема появляется после попытки слияния каких-то массивов (скорее всего $data), второй из них не массив, почему-то, - поэтому в массиве $data ничего не передается. Если ик слету, то я бы перед слиянием добавил это

if(!is_array(переменная, обзывающая второй массив)) переменная, обзывающая второй массив = array();

в иком случае ошибки при слиянии удастся избежать, ну а им разбираться, почему второй массив - не массив

Edited by esculapra
Link to comment
Share on other sites

Сложность в том что перед появление ошибки ничего не менялось и все рилиило, последний раз, в Модулях, я заходил в "Магазин", но ничего не менялось. никаких изменений связанных с шаблоном не было..

Файл Layout.php

 

 

<?php
class ControllerDesignLayout extends Controller {
    private $error = array();

    public function index() {
        $this->load->language('design/layout');

        $this->document->setTitle($this->language->get('heading_title'));
        
        $this->load->model('design/layout');

        $this->getList();
    }

    public function add() {
        $this->load->language('design/layout');

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

        $this->load->model('design/layout');

        if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) {
            $this->model_design_layout->addLayout($this->request->post);

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

            $url = '';

            if (isset($this->request->get['sort'])) {
                $url .= '&sort=' . $this->request->get['sort'];
            }

            if (isset($this->request->get['order'])) {
                $url .= '&order=' . $this->request->get['order'];
            }

            if (isset($this->request->get['page'])) {
                $url .= '&page=' . $this->request->get['page'];
            }

            $this->response->redirect($this->url->link('design/layout', 'token=' . $this->session->data['token'] . $url, true));
        }

        $this->getForm();
    }

    public function edit() {
        $this->load->language('design/layout');

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

        $this->load->model('design/layout');

        if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) {
            $this->model_design_layout->editLayout($this->request->get['layout_id'], $this->request->post);

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

            $url = '';

            if (isset($this->request->get['sort'])) {
                $url .= '&sort=' . $this->request->get['sort'];
            }

            if (isset($this->request->get['order'])) {
                $url .= '&order=' . $this->request->get['order'];
            }

            if (isset($this->request->get['page'])) {
                $url .= '&page=' . $this->request->get['page'];
            }

            $this->response->redirect($this->url->link('design/layout', 'token=' . $this->session->data['token'] . $url, true));
        }

        $this->getForm();
    }

    public function delete() {
        $this->load->language('design/layout');

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

        $this->load->model('design/layout');

        if (isset($this->request->post['selected']) && $this->validateDelete()) {
            foreach ($this->request->post['selected'] as $layout_id) {
                $this->model_design_layout->deleteLayout($layout_id);
            }

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

            $url = '';

            if (isset($this->request->get['sort'])) {
                $url .= '&sort=' . $this->request->get['sort'];
            }

            if (isset($this->request->get['order'])) {
                $url .= '&order=' . $this->request->get['order'];
            }

            if (isset($this->request->get['page'])) {
                $url .= '&page=' . $this->request->get['page'];
            }

            $this->response->redirect($this->url->link('design/layout', 'token=' . $this->session->data['token'] . $url, true));
        }

        $this->getList();
    }

    protected function getList() {
        if (isset($this->request->get['sort'])) {
            $sort = $this->request->get['sort'];
        } else {
            $sort = 'name';
        }

        if (isset($this->request->get['order'])) {
            $order = $this->request->get['order'];
        } else {
            $order = 'ASC';
        }

        if (isset($this->request->get['page'])) {
            $page = $this->request->get['page'];
        } else {
            $page = 1;
        }

        $url = '';

        if (isset($this->request->get['sort'])) {
            $url .= '&sort=' . $this->request->get['sort'];
        }

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }

        if (isset($this->request->get['page'])) {
            $url .= '&page=' . $this->request->get['page'];
        }

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

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

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('heading_title'),
            'href' => $this->url->link('design/layout', 'token=' . $this->session->data['token'] . $url, true)
        );

        $data['add'] = $this->url->link('design/layout/add', 'token=' . $this->session->data['token'] . $url, true);
        $data['delete'] = $this->url->link('design/layout/delete', 'token=' . $this->session->data['token'] . $url, true);

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

        $filter_data = array(
            'sort'  => $sort,
            'order' => $order,
            'start' => ($page - 1) * $this->config->get('config_limit_admin'),
            'limit' => $this->config->get('config_limit_admin')
        );

        $layout_total = $this->model_design_layout->getTotalLayouts();

        $results = $this->model_design_layout->getLayouts($filter_data);

        foreach ($results as $result) {
            $data['layouts'][] = array(
                'layout_id' => $result['layout_id'],
                'name'      => $result['name'],
                'edit'      => $this->url->link('design/layout/edit', 'token=' . $this->session->data['token'] . '&layout_id=' . $result['layout_id'] . $url, true)
            );
        }

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

        $data['text_list'] = $this->language->get('text_list');
        $data['text_no_results'] = $this->language->get('text_no_results');
        $data['text_confirm'] = $this->language->get('text_confirm');

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

        $data['button_add'] = $this->language->get('button_add');
        $data['button_edit'] = $this->language->get('button_edit');
        $data['button_delete'] = $this->language->get('button_delete');

        if (isset($this->error['warning'])) {
            $data['error_warning'] = $this->error['warning'];
        } else {
            $data['error_warning'] = '';
        }

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

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

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

        $url = '';

        if ($order == 'ASC') {
            $url .= '&order=DESC';
        } else {
            $url .= '&order=ASC';
        }

        if (isset($this->request->get['page'])) {
            $url .= '&page=' . $this->request->get['page'];
        }

        $data['sort_name'] = $this->url->link('design/layout', 'token=' . $this->session->data['token'] . '&sort=name' . $url, true);

        $url = '';

        if (isset($this->request->get['sort'])) {
            $url .= '&sort=' . $this->request->get['sort'];
        }

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }

        $pagination = new Pagination();
        $pagination->total = $layout_total;
        $pagination->page = $page;
        $pagination->limit = $this->config->get('config_limit_admin');
        $pagination->url = $this->url->link('design/layout', 'token=' . $this->session->data['token'] . $url . '&page={page}', true);

        $data['pagination'] = $pagination->render();

        $data['results'] = sprintf($this->language->get('text_pagination'), ($layout_total) ? (($page - 1) * $this->config->get('config_limit_admin')) + 1 : 0, ((($page - 1) * $this->config->get('config_limit_admin')) > ($layout_total - $this->config->get('config_limit_admin'))) ? $layout_total : ((($page - 1) * $this->config->get('config_limit_admin')) + $this->config->get('config_limit_admin')), $layout_total, ceil($layout_total / $this->config->get('config_limit_admin')));

        $data['sort'] = $sort;
        $data['order'] = $order;


        $tmp_data = $this->load->controller('design/hyper_positions');
        $data = array_merge($data, $tmp_data);
        
        $data['header'] = $this->load->controller('common/header');
        $data['column_left'] = $this->load->controller('common/column_left');
        $data['footer'] = $this->load->controller('common/footer');

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

    protected function getForm() {
        $data['heading_title'] = $this->language->get('heading_title');

        $data['text_form'] = !isset($this->request->get['layout_id']) ? $this->language->get('text_add') : $this->language->get('text_edit');
        $data['text_route'] = $this->language->get('text_route');
        $data['text_module'] = $this->language->get('text_module');
        $data['text_default'] = $this->language->get('text_default');
        $data['text_content_top'] = $this->language->get('text_content_top');
        $data['text_content_bottom'] = $this->language->get('text_content_bottom');
        $data['text_column_left'] = $this->language->get('text_column_left');
        $data['text_column_right'] = $this->language->get('text_column_right');
        $data['text_edit'] = $this->language->get('text_edit');
        $data['text_remove'] = $this->language->get('text_remove');
        
        $data['entry_name'] = $this->language->get('entry_name');
        $data['entry_store'] = $this->language->get('entry_store');
        $data['entry_route'] = $this->language->get('entry_route');
        $data['entry_module'] = $this->language->get('entry_module');

        $data['button_save'] = $this->language->get('button_save');
        $data['button_cancel'] = $this->language->get('button_cancel');
        $data['button_route_add'] = $this->language->get('button_route_add');
        $data['button_module_add'] = $this->language->get('button_module_add');
        $data['button_edit'] = $this->language->get('button_edit');
        $data['button_remove'] = $this->language->get('button_remove');

        if (isset($this->error['warning'])) {
            $data['error_warning'] = $this->error['warning'];
        } else {
            $data['error_warning'] = '';
        }

        if (isset($this->error['name'])) {
            $data['error_name'] = $this->error['name'];
        } else {
            $data['error_name'] = '';
        }

        $url = '';

        if (isset($this->request->get['sort'])) {
            $url .= '&sort=' . $this->request->get['sort'];
        }

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }

        if (isset($this->request->get['page'])) {
            $url .= '&page=' . $this->request->get['page'];
        }

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

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

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('heading_title'),
            'href' => $this->url->link('design/layout', 'token=' . $this->session->data['token'] . $url, true)
        );

        if (!isset($this->request->get['layout_id'])) {
            $data['action'] = $this->url->link('design/layout/add', 'token=' . $this->session->data['token'] . $url, true);
        } else {
            $data['action'] = $this->url->link('design/layout/edit', 'token=' . $this->session->data['token'] . '&layout_id=' . $this->request->get['layout_id'] . $url, true);
        }

        $data['cancel'] = $this->url->link('design/layout', 'token=' . $this->session->data['token'] . $url, true);

        $data['token'] = $this->session->data['token'];

        if (isset($this->request->get['layout_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) {
            $layout_info = $this->model_design_layout->getLayout($this->request->get['layout_id']);
        }

        if (isset($this->request->post['name'])) {
            $data['name'] = $this->request->post['name'];
        } elseif (!empty($layout_info)) {
            $data['name'] = $layout_info['name'];
        } else {
            $data['name'] = '';
        }

        $this->load->model('setting/store');

        $data['stores'] = $this->model_setting_store->getStores();

        if (isset($this->request->post['layout_route'])) {
            $data['layout_routes'] = $this->request->post['layout_route'];
        } elseif (isset($this->request->get['layout_id'])) {
            $data['layout_routes'] = $this->model_design_layout->getLayoutRoutes($this->request->get['layout_id']);
        } else {
            $data['layout_routes'] = array();
        }

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

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

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

        // Get a list of installed modules
        $extensions = $this->model_extension_extension->getInstalled('module');

        // Add all the modules which have multiple settings for each module
        foreach ($extensions as $code) {
            $this->load->language('extension/module/' . $code);

            $module_data = array();

            $modules = $this->model_extension_module->getModulesByCode($code);

            foreach ($modules as $module) {
                $module_data[] = array(
                    'name' => strip_tags($module['name']),
                    'code' => $code . '.' .  $module['module_id']
                );
            }

            if ($this->config->has($code . '_status') || $module_data) {
                $data['extensions'][] = array(
                    'name'   => strip_tags($this->language->get('heading_title')),
                    'code'   => $code,
                    'module' => $module_data
                );
            }
        }

        // Modules layout
        if (isset($this->request->post['layout_module'])) {
            $layout_modules = $this->request->post['layout_module'];
        } elseif (isset($this->request->get['layout_id'])) {
            $layout_modules = $this->model_design_layout->getLayoutModules($this->request->get['layout_id']);
        } else {
            $layout_modules = array();
        }

        $data['layout_modules'] = array();
        
        // Add all the modules which have multiple settings for each module
        foreach ($layout_modules as $layout_module) {
            $part = explode('.', $layout_module['code']);
        
            $this->load->language('extension/module/' . $part[0]);

            if (!isset($part[1])) {
                $data['layout_modules'][] = array(
                    'name'       => strip_tags($this->language->get('heading_title')),
                    'code'       => $layout_module['code'],
                    'edit'       => $this->url->link('extension/module/' . $part[0], 'token=' . $this->session->data['token'], true),
                    'position'   => $layout_module['position'],
                    'sort_order' => $layout_module['sort_order']
                );
            } else {
                $module_info = $this->model_extension_module->getModule($part[1]);
                
                if ($module_info) {
                    $data['layout_modules'][] = array(
                        'name'       => strip_tags($module_info['name']),
                        'code'       => $layout_module['code'],
                        'edit'       => $this->url->link('extension/module/' . $part[0], 'token=' . $this->session->data['token'] . '&module_id=' . $part[1], true),
                        'position'   => $layout_module['position'],
                        'sort_order' => $layout_module['sort_order']
                    );
                }                
            }
        }        
        

        $tmp_data = $this->load->controller('design/hyper_positions');
        $data = array_merge($data, $tmp_data);
        
        $data['header'] = $this->load->controller('common/header');
        $data['column_left'] = $this->load->controller('common/column_left');
        $data['footer'] = $this->load->controller('common/footer');

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

    protected function validateForm() {
        if (!$this->user->hasPermission('modify', 'design/layout')) {
            $this->error['warning'] = $this->language->get('error_permission');
        }

        if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 64)) {
            $this->error['name'] = $this->language->get('error_name');
        }

        return !$this->error;
    }

    protected function validateDelete() {
        if (!$this->user->hasPermission('modify', 'design/layout')) {
            $this->error['warning'] = $this->language->get('error_permission');
        }

        $this->load->model('setting/store');
        $this->load->model('catalog/product');
        $this->load->model('catalog/category');
        $this->load->model('catalog/information');

        foreach ($this->request->post['selected'] as $layout_id) {
            if ($this->config->get('config_layout_id') == $layout_id) {
                $this->error['warning'] = $this->language->get('error_default');
            }

            $store_total = $this->model_setting_store->getTotalStoresByLayoutId($layout_id);

            if ($store_total) {
                $this->error['warning'] = sprintf($this->language->get('error_store'), $store_total);
            }

            $product_total = $this->model_catalog_product->getTotalProductsByLayoutId($layout_id);

            if ($product_total) {
                $this->error['warning'] = sprintf($this->language->get('error_product'), $product_total);
            }

            $category_total = $this->model_catalog_category->getTotalCategoriesByLayoutId($layout_id);

            if ($category_total) {
                $this->error['warning'] = sprintf($this->language->get('error_category'), $category_total);
            }

            $information_total = $this->model_catalog_information->getTotalInformationsByLayoutId($layout_id);

            if ($information_total) {
                $this->error['warning'] = sprintf($this->language->get('error_information'), $information_total);
            }
        }

        return !$this->error;
    }
}

Link to comment
Share on other sites


Попробуйте временно отклюлить модификатор, который это добавляет, или просто закоментите в когде кэша

        $tmp_data = $this->load->controller('design/hyper_positions');
        $data = array_merge($data, $tmp_data);

Link to comment
Share on other sites


8 минут назад, Shureg сказал:

Попробуйте временно отклюлить модификатор,

по теории, осинутся неопрегделенными переменные, которые добавляет hyper_position

Link to comment
Share on other sites

9 минут назад, fanatic сказал:

по теории, осинутся неопрегделенными переменные, которые добавляет hyper_position

Это же не решение, это проэтосс отладки) Глянуть, на что ругаться пересинет, и на что начнет.

Link to comment
Share on other sites


13 минут назад, Shureg сказал:

Глянуть,

тогда ик

$tmp_data = $this->load->controller('design/hyper_positions');
 //$data = array_merge($data, $tmp_data);
 echo '<pre>';
 echo var_dump($tmp_data);
 echo '</pre>';

 

Link to comment
Share on other sites

9 минут назад, fanatic сказал:

тогда ик

$tmp_data = $this->load->controller('design/hyper_positions');
 //$data = array_merge($data, $tmp_data);
 echo '<pre>';
 echo var_dump($tmp_data);
 echo '</pre>';

 

Это второй шаг. Сначала убедиться, что проблема именно в этом гипере. Хоть вероятность и 99%, но вскакое бывает. А в обещём, неважно)

Link to comment
Share on other sites


1 час назад, Shureg сказал:

Попробуйте временно отклюлить модификатор, который это добавляет, или просто закоментите в когде кэша

        $tmp_data = $this->load->controller('design/hyper_positions');
        $data = array_merge($data, $tmp_data);

Сгделал, ничего не изменилось.

Link to comment
Share on other sites


1 минуту назад, ZloyShaman сказал:

Сгделал, ничего не изменилось.

не может быть.  зналит что-то не им, не то сгделали

Link to comment
Share on other sites

4 минуты назад, ZloyShaman сказал:

hyper_position.php

опечатка

hyper_posotions.php

если и этого нет, тогда  в этом и прилина ошипотому чток.

  • +1 1
Link to comment
Share on other sites

И проблема решилась.. но привела к новой.. По сути куда то гделась часть файлов, каждый раз копируя недосиющий, проблема уходит

Edited by ZloyShaman
Link to comment
Share on other sites


17 минут назад, ZloyShaman сказал:

Спасипотому что всем. Решение найгдено, не хваило файла hyper_position.php . Проблема решилась его копированием в указанную папку

А у вас на сайте это норма - все рилиило, а потом раз - и файла не хваиет?

Link to comment
Share on other sites


Та ну мне скучно просто, я по ночам удаляю файлы, а утром удивленно обнаруживаю их отсутствие)))) на самом гделе, я просто перегделывал немного БД, с опенкари 1,5, для того чтобы посивить ее на 2,3. Все прошло успешно, база перенеслась, все пока проводилось на опенсервере. Для справки гделаю я это первый раз, ик же это первое знакомство с опенкартом. Поэтому слиию что подобные проблемы скорее всего связаны с отсутствием опыи

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...

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.