Как изменить порядок пунктов меню в backend OctoberCMS

Типичная ситуация — установили кучу плагинов и меню в админке стало настолько огромное, что пользоваться им тяжело. Особенно когда нужные пункты в самом конце.

Вот тут и пригодится знание, как изменить порядок пунктов меню. Можно конечно зайти в файл plugin.yaml каждого плагина и изменить order, но это плохой вариант — при обновлении плагина, наши правки слетят.

Чтобы сделать сортировку корректно, мы будем изменять порядок пунктов меню через наш плагин (если его нет, то надо создать).

Код очень простой:

Plugin.php

use Event;

...

public function boot()
{
    // слушаем событие, благодаря которому можем изменять пункты меню
    Event::listen('backend.menu.extendItems', function ($manager) {

        // для October.Backend делаем пункт `dashboard` первым
        $manager->addMainMenuItems('October.Backend', [
            'dashboard' => [
                'order' => '1'
            ]
        ]);

        // для October.Cms делаем пункт меню `cms` вторым
        $manager->addMainMenuItems('October.Cms', [
            'cms' => [
                'order' => '2'
            ]
        ]);

        // Для плагина Lovata.Shopaholic делаем пункт меню `shopaholic-menu-main` третьим
        $manager->addMainMenuItems('Lovata.Shopaholic', [
            'shopaholic-menu-main' => [
                'order' => '3'
            ]
        ]);

    });
}

Логичный вопрос — откуда мы знаем, что надо писать October.Cms или Lovata.Shopaholic? Это namespace плагина (Автор.НазваниеПлагина), посмотреть это можно перейдя в папку нужного плагина и открыв файл Plugin.php. И там вверху мы увидим <?php namespace Lovata/Shopaholic; это и есть нужные нам Автор/НазваниеПлагина.

Следующий вопрос как узнать название пункта меню (по примеру шопоголика 'shopaholic-menu-main'). Тоже не сложно — переходим в папку плагина шопоголика, открываем файл plugin.yaml и смотрим внимательно:

plugin.yaml

plugin:
    name: 'lovata.shopaholic::lang.plugin.name'
    description: 'lovata.shopaholic::lang.plugin.description'
    author: Lovata
    icon: oc-icon-book
    homepage: ''
navigation:
    shopaholic-menu-main:
        label: 'lovata.shopaholic::lang.menu.main'
        url: lovata/shopaholic/products
        icon: icon-th-large
        permissions:
            - 'shopaholic-menu-*'
...

Название пункта меню в секции navigation.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *