Добавить подменю в OpenCart по событиям в админке

Добавить подменю в OpenCart по событиям в админке

24.07.2017 12:28:02 Просмотров 32 Источник

Я хочу добавить подменю в OpenCart, в меню каталога в админке. в прошлом мы использовали ocmod или vqmod для этого, пример ocmod здесь:

<?xml version="1.0" encoding="utf-8"?>
<modification>
    <code>submenu5</code>
    <name>submenu5</name>
    <version>2.3</version>
    <author>codertj</author>
    <link>codertj.com</link>

    <!-- edit header controller -->
    <file path="admin/controller/common/column_left.php">
    <!-- create link to your page -->   
        <operation error="log">
            <search><![CDATA[if ($this->user->hasPermission('access', 'catalog/product')) {]]></search>
            <add  position="before"><![CDATA[
                if ($this->user->hasPermission('access', 'catalog/product')) {
                    $catalog[] = array(
                        'name'     => $this->language->get('text_hello_world'),
                        'href'     => $this->url->link('report/helloworld', 'token=' . $this->session->data['token'], true),
                        'children' => array()   
                    );
                }
            ]]></add>
        </operation>
    </file>

    <!-- edit header template -->
    <file path="admin/language/en-gb/common/column_left.php">
        <operation error="log">
            <search><![CDATA[$_['text_product']]]></search>
            <add  position="before"><![CDATA[
               $_['text_hello_world']             = 'Hello World';
            ]]></add>
        </operation>
    </file>

</modification> 

Теперь opencart использует систему событий, но я не могу найти решение для преобразования этого ocmod в событие!

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/45276925/add-submenu-in-opencart-by-events-in-admin-area#comment77520307_45276925
Вы все еще можете сделать это с помощью vQmod. Это был бы лучший и самый прямой путь вперед.
https://stackoverflow.com/questions/45276925/add-submenu-in-opencart-by-events-in-admin-area#comment77520371_45276925
Спасибо Скотт, Я знаю это и сделал то, но я хочу научиться делать это по событиям, это аспект обучения для меня...
https://stackoverflow.com/questions/45276925/add-submenu-in-opencart-by-events-in-admin-area#comment77521184_45276925
События OpenCart полностью отличаются в версиях 2.0 и 2.3. Затем они снова отличаются в версии 3.0. Какую версию вы хотите узнать?
https://stackoverflow.com/questions/45276925/add-submenu-in-opencart-by-events-in-admin-area#comment77521756_45276925
версия 2.3.X и версия 3
https://stackoverflow.com/questions/45276925/add-submenu-in-opencart-by-events-in-admin-area#comment77523207_45276925
Я также не думаю, что вы сможете изменить пользовательский интерфейс с помощью событий. К моменту запуска события представление либо еще не было визуализировано, либо было полностью визуализировано. Но вы можете попробовать это в 2.3-см. yellopen.com/opencart-2.3.x-event-system
https://stackoverflow.com/questions/45276925/add-submenu-in-opencart-by-events-in-admin-area#comment77599761_45276925
Я не думаю, что это приведет к результату... К сожалению, документы OpenCart неполны, а все объяснения заброшены и неполноценны
https://stackoverflow.com/questions/45276925/add-submenu-in-opencart-by-events-in-admin-area#comment83092643_45276925
@HamidAbbasi سوالی در مورد سیستم رویداد دارید، تا جایی که بتونم راهنمایی می منم.

Ответы - Добавить подменю в OpenCart по событиям в админке / Add submenu in OpenCart by events in admin area

Является ответом!
DigitCart

02.01.2018 02:29:38

Вы можете сделать это таким образом, Мы предполагаем, что вы записали событие в базу данных, если вы этого не сделали, вы можете быстро создать его с помощью следующего запроса:

INSERT INTO `oc_event` (`code`, `trigger`, `action`, `status`) VALUES ('mymodule', 'admin/view/common/column_left/before', 'extension/module/mymodule/addSubmenu', 1)

admin \ controller\extension\module\mymodule.РНР

<?php
class ControllerExtensionModuleMymodule extends Controller {
    public function addSubmenu(&$route = false, &$data = false, &$output = false){
        $my_language = $this->load->language('extension/module/mymodule');
        $data['menus'][1]['children'][] = array(
            'name'     => $my_language['text_hello_world'],
            'href'     => $this->url->link('report/helloworld', 'token=' . $this->session->data['token'], true),
            'children' => array()
        );
    }
}

admin \ language\en-gb\extension\module\mymodule.РНР

<?php
$_['text_hello_world']      = 'Hello World!';

Я проверил это с OpenCart 2.3

George-Paul B.

12.09.2019 02:21:27

Как добавить пункт меню администратора для Opencart 3x в данный пункт меню администратора с помощью событий

Данный раздел посвящен введению элемента подменю над ссылкой каталог - > продукты

  1. Удалите событие, если оно существует, зарегистрируйте событие (в вашем расширении при установке, возможно)

Вариант а: использовать метод Opencart

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

$this- > model_setting_event - > > deleteEvent ('>>MY_EVENT');

$этом->model_setting_event->addEvent('MY_EVENT', 'админ/вид/общий/column_left/до', 'расширение/модуль/MY_EXTENSION/ADDTOADMINMENU');

Вариант B: внедрите свой код в базу данных из модели Opencart (или даже из функции контроллера, если вы не очень заботитесь о MVC):

    $this->db->query("
        INSERT INTO
            `oc_event`
            (`code`, `trigger`, `action`, `status`, `sort_order`)
            VALUES
            ('MY_EVENT', 'admin/view/common/column_left/before', 'extension/module/MY_EXTENSION/ADDTOADMINMENU', 1, 0)
    ");

Вариант C: выполните этот запрос в базе данных Opencart (от phpMyAdmin, Adminer и т. д.):

    INSERT INTO
        `oc_event`
        (`code`, `trigger`, `action`, `status`, `sort_order`)
        VALUES
        ('MY_EVENT', 'admin/view/common/column_left/before', 'extension/module/MY_EXTENSION/ADDTOADMINMENU', 1, 0)
  1. Добавьте функцию Event public в ваше расширение

    public function ADDTOADMINMENU(&$route, &$data){
    
        /**
        * Check if current logged in user has permission to access that link
        * Replace "extension/module/MY_EXTENSION" with your target path
        * This check can very well be ignored/deleted...
        **/
    
        if ($this->user->hasPermission('access', 'extension/module/MY_EXTENSION')) {
            $my_menu_entry = array(
                'id'       => 'menu-MY_EXTENSION',
                'icon'     => 'fa-check',
                'name'     => 'My menu entry',
                'href'     => $this->url->link('extension/module/MY_EXTENSION', 'user_token=' . $this->session->data['user_token'], true),
                'children' => array()
            );
    
            $target_menu_id      = 'menu-catalog';
            $target_submenu_href = $this->url->link('catalog/product', 'user_token=' . $this->session->data['user_token'], true);
    
            $new_menu = array();
    
            foreach( $data['menus'] as &$menu ) {
    
                if( $menu['id'] == $target_menu_id ) {
    
                    $new_submenu = array();
    
                    foreach( $menu['children'] as $submenu ) {
                        if( $submenu['href'] == $target_submenu_href ) {
                            $new_submenu[] = $my_menu_entry;
                            $new_submenu[] = $submenu;
                        } else {
                            $new_submenu[] = $submenu;
                        }
                    }
                    $menu['children'] = $new_submenu;
                    $new_menu[] = $menu;
                } else {
                    $new_menu[] = $menu;
                }
            }
    
            $data['menus'] = $new_menu;
        }
    }
    
Закрыть X