Как создать пользовательскую страницу администратора в 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 Модификация системы