Menu OctoberCMS更改后端菜单组织

Menu OctoberCMS更改后端菜单组织,menu,backend,octobercms,Menu,Backend,Octobercms,我想更改OctorberCMS后端菜单组织。 例子: 我想从Rainlab插件静态页面-菜单的侧栏移动到OctoberCMS侧栏,或者可以将Rainlab插件静态页面-菜单添加到主菜单。您可以在Plugin.php文件中使用registerNavigation函数完成此操作。例如,此代码定义顶部菜单和侧栏菜单: return [ 'title' => [ 'label' => 'title', 'url' => B

我想更改OctorberCMS后端菜单组织。 例子:
我想从Rainlab插件静态页面-菜单的侧栏移动到OctoberCMS侧栏,或者可以将Rainlab插件静态页面-菜单添加到主菜单。

您可以在Plugin.php文件中使用registerNavigation函数完成此操作。例如,此代码定义顶部菜单和侧栏菜单:

return [
        'title' => [
            'label' => 'title',
            'url' => Backend::url('...'),
            'icon' => 'icon-cube',
            'permissions' => ['access.*'],
            'order' => 501,

            'sideMenu' => [
                'title' => [
                    'label' => '....',
                    'url' => Backend::url('....'),
                    'icon' => 'icon-slack',
                    'permissions' => ['access'],
                    'order' => 500,
                ],
此外,您必须在控制器中定义以下内容:

BackendMenu::setContext('Author.Plugin Name', 'plugin', 'model');

我知道这可能是很明显的,但我还是会说,只是为了确定。如果您想更改非作者插件提供的后端菜单项的外观或位置,请不要自己对这些文件进行任何更改。每次更新插件时,您都会丢失所有这些自定义更改

更好的办法是创建自己的插件,使用第三方插件作为依赖项,然后对这个新插件进行必要的更改

示例:您希望更改RainLab.User插件后端菜单项的显示

创建一个新插件并根据需要命名。例如:Acme.UserExtension。 现在,在这个新插件的
plugin.php
文件中,您可以添加对RainLab.User插件的依赖项,然后隐藏它的菜单项,如下所示:

public $require = ['RainLab.User'];

public function boot()
{
    /** Add a side-menu item */
    Event::listen('backend.menu.extendItems', function($manager) {
        $manager->addSideMenuItem('RainLab.User', 'user', [
            'payments' => [
                'label' => '...'
            ]
        ]);
    });

    /** Add a custom main-menu item */
    Event::listen('backend.menu.extendItems', function($manager) {
        $manager->addMainMenuItem('Acme.UserExtension', 'user');
    });

    /** Remove the original main-menu item */
    Event::listen('backend.menu.extendItems', function($manager) {
        $manager->removeMainMenuItem('RainLab.User', 'user');
    });

}
正如你所见,如果你想要的话,你可以完全删除一个你不拥有的插件的菜单项。您可以像上面所示那样扩展它,只需使用
registerNavigation()
方法来完成此扩展插件所需的操作。您可能需要复制一些您确实希望从原始父插件保留的菜单项,但现在您可以添加一些您自己的菜单项或删除不需要的菜单项

有关如何执行此操作的更多详细信息,请参见->

希望这不会太复杂,可以帮助你解决问题