Как создать пользовательскую страницу администратора в opencart?

Я хочу знать, как сделать пользовательскую страницу панели администратора в opencart.

Требуется вход в систему с контроллером - панель администратора, похоже, не использует тот же контроллер, что и обычный сайт. Я знаю, как сделать пользовательские страницы с OpenCart (но это не для администратора)

Простой пример Hello World был бы хорош

1 ответ

Решение

OpenCart 2.x

Имена путей изменились в OpenCart 2 - вы захотите создать

admin/controller/extension/module/hello.php admin/language/en-gb/extension/module/hello.php admin/view/template/extension/module/hello.tpl Тогда маршрут становится

admin/index.php?route=extension/module/hello

OpenCart 1.x

  • Включите полный поток MVC.

Я узнал, как это сделать. OpenCart использует шаблон MVC. Я рекомендую прочитать о том, как стать гуру OpenCart? пост о том, как работает система - этого рабочего процесса администратора также должно хватить для конечного пользователя.

1) Создать новый файл в admin/controller/custom/helloworld.php

Ваше имя файла и имя контроллера должны быть одинаковыми в следующем порядке:

helloworld.php

<?

class ControllerCustomHelloWorld extends Controller{ 
    public function index(){
                // VARS
                $template="custom/hello.tpl"; // .tpl location and file
        $this->load->model('custom/hello');
        $this->template = ''.$template.'';
        $this->children = array(
            'common/header',
            'common/footer'
        );      
        $this->response->setOutput($this->render());
    }
}
?>

2) Создать новый файл в admin/view/template/custom/hello.tpl

Hello.tpl

<?php echo $header; ?>
<div id="content">
<h1>HelloWorld</h1>
<?php
echo 'I can also run PHP too!'; 
?>
</div> 
<?php echo $footer; ?>

3) Создать новый файл в admin/model/custom/hello.php

<?php
class ModelCustomHello extends Model {
    public function HellWorld() {
        $sql = "SELECT x FROM `" . DB_PREFIX . "y`)"; 
        $implode = array();
        $query = $this->db->query($sql);
        return $query->row['total'];    
    }       
}
?>

4) Затем вам нужно включить плагин, чтобы избежать ошибок в разрешении:

Opencart > Admin > Users > User Groups > Admin > Edit

Выберите и включите разрешение доступа.

Чтобы посетить вашу страницу, перейдите на

www.yoursite.com/opencart/admin/index.php?route=custom/helloworld

OpenCart 3.x

Мы можем использовать ту же структуру MVC+L, что и в OC 1 и 2. Вот подробный пример. Латс называют это Custom Page.


Создание модели с использованием пути/admin/model/custom/page.php

<?php
class ModelCustomPage extends Model {
    
    public function getTotalInformationsOnCustomPage() {
        $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "information");
        return $query->row['total'];
    }

}

Путь к файлу и название модели должны совпадать. model/custom/page.php становится ModelCustomPage.

Здесь вы можете увидеть метод public function getTotalInformationsOnCustomPage(), это просто, например, взято из Информационной модели. Необязательный.


Создание контроллера с использованием пути/admin/controller/custom/page.php

<?php
class ControllerCustomPage extends Controller {
    public function index() {
        
        $this->load->language('custom/page'); // calling Custom Page language

        $this->document->setTitle($this->language->get('heading_title')); // set title from Custom Page language

        $this->load->model('custom/page'); // calling Custom Page model
        
        $data['information_total'] = $this->model_custom_page->getTotalInformationsOnCustomPage(); // calling model method 
        
        // breadcrumbs
        $data['breadcrumbs'] = array();

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

        $data['breadcrumbs'][] = array(
            'text' => $this->language->get('heading_title'),
            'href' => $this->url->link('custom/page', 'user_token=' . $this->session->data['user_token'], true)
        );
        
        // calling header, footer and column_left for our template to render properly
        $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('custom/page', $data)); // send our $data array to view
    }
}

Это минимальный набор для красивой страницы администратора со всеми меню и панировочными сухарями по умолчанию.

Как и в модели, ваш путь к файлу и имя контроллера должны совпадать. controller/custom/page.php становится ControllerCustomPage.


Создание языка с использованием пути/admin/language/en-gb/custom/page.php

<?php
// Heading
$_['heading_title']           = 'Custom Page';

// Text
$_['text_custom_block']       = 'Custom Block';
$_['text_total_informations'] = 'Total informations:';

Создание представления с использованием пути/admin/view/template/custom/page.twig

{{ header }}{{ column_left }}
<div id="content">
  <div class="page-header">
    <div class="container-fluid">
      <h1>{{ heading_title }}</h1>
      <ul class="breadcrumb">
        {% for breadcrumb in breadcrumbs %}
        <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
        {% endfor %}
      </ul>
    </div>
  </div>
  <div class="container-fluid">    
    <div class="panel panel-default">
      <div class="panel-heading">
        <h3 class="panel-title"><i class="fa fa-thumbs-up"></i> {{ text_custom_block }}</h3>
      </div>
      <div class="panel-body">{{ text_total_informations }} {{ information_total }}</div>
    </div>
  </div>
</div>
{{ footer }}

В этом примере я использовал стандартную блочную структуру, присущую этой системе. Вы можете использовать любой HTML, какой захотите. Как вы видете,{{ header }}, {{ column_left }}, {{ footer }} добавлен для стандартной поддержки навигации администратора.

Работать с .twigфайлы не забудьте очистить кеш ветки, чтобы увидеть изменения.


После всех этих манипуляций не забудьте выставить разрешения для вашего нового приложения. В панели администратора перейдите в Система> Пользователи> Группы пользователей, отредактируйте группу администраторов (или / или любую другую, которую хотите). На странице редактирования установите найтиcustom/pageв блоках Access Permission и Modify Permission и отметьте его как выбранный. Сохранить.


Теперь ваше новое приложение доступно по URL yoursite.com/admin/index.php?route=custom/page&user_token=XXXXXX

С этого момента вы можете добавить свою настраиваемую страницу в левое меню панели администратора. Вы можете сделать это, отредактировав файлы ядра или, лучше, файл OCMOD.

Создайте custom_page.ocmod.xml

<?xml version="1.0" encoding="utf-8"?>
<modification>
  <name>Custom Page OCMOD</name>
  <code>custom-page</code>
  <version>1.0</version>
  <author>Me</author>
  <link>http://mywebsite.com</link>

  <file path="admin/controller/common/column_left.php">
    <operation>
      <search><![CDATA[// Stats]]></search>
      <add position="before"><![CDATA[
      $data['menus'][] = array(
        'id'       => 'menu-custom',
        'icon'     => 'fa-thumbs-up', 
        'name'     => $this->language->get('text_custom'),
        'href'     => $this->url->link('custom/page', 'user_token=' . $this->session->data['user_token'], true)
      );
      ]]></add>
    </operation>
  </file>  
  
  <file path="admin/language/en-gb/common/column_left.php">
    <operation>
      <search><![CDATA[// Text]]></search>
      <add position="after"><![CDATA[
        $_['text_custom']                  = 'Custom Page';
      ]]></add>
    </operation>
  </file>  

</modification>

Установите файл в Расширения> Установщик

Затем перейдите в Extensions > Extensions и очистите кеш OCMOD.

В этом файле OCMOD мы только что изменили два основных файла OpenCart, не редактируя их напрямую. Теперь вы увидите ссылку на настраиваемой странице в левом меню администратора.

Подробнее о OCMOD вы можете прочитать в OpenCart Модификация Вопросы системы, относящиеся и OpenCart OCMOD и VQMOD Модификация системы

Другие вопросы по тегам