Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

Надіслати
Поділитися на інших сайтах

есть файл  system/storage/modification/admin/controller/design/layuot.php ?

если есть, покажите

Надіслати
Поділитися на інших сайтах

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

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

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

Змінено користувачем esculapra
Надіслати
Поділитися на інших сайтах

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

Файл 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;
    }
}

Надіслати
Поділитися на інших сайтах


покажите файл  admin/controller/design/hyper_position.php

Надіслати
Поділитися на інших сайтах

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

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

Надіслати
Поділитися на інших сайтах


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

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

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

Надіслати
Поділитися на інших сайтах

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

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

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

Надіслати
Поділитися на інших сайтах


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>';

 

Надіслати
Поділитися на інших сайтах

 а лучше сразу глянуть

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

файл  admin/controller/design/hyper_position.php

 

Надіслати
Поділитися на інших сайтах

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%, но всякое бывает. А в общем, неважно)

Надіслати
Поділитися на інших сайтах


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

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

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

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

Надіслати
Поділитися на інших сайтах


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

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

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

Надіслати
Поділитися на інших сайтах

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

hyper_position.php

опечатка

hyper_posotions.php

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

  • +1 1
Надіслати
Поділитися на інших сайтах

не те строки закоментировали

строка  254

 

Надіслати
Поділитися на інших сайтах

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

Змінено користувачем ZloyShaman
Надіслати
Поділитися на інших сайтах


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

но привела к новой..

а кому сейчас легко?

Надіслати
Поділитися на інших сайтах

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

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

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

Надіслати
Поділитися на інших сайтах


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

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

а че, сайт живет своей жизнью. :ugeek:

Надіслати
Поділитися на інших сайтах

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.