【发布时间】:2017-09-07 20:27:55
【问题描述】:
我想更改 OctoberCMS 后端菜单组织。 例子: 我想从 Rainlab 插件静态页面 - 菜单的侧边栏移动到 OctoberCMS CMS 侧边栏,或者可以将 Rainlab 插件静态页面 - 菜单添加到主菜单。
【问题讨论】:
标签: menu backend octobercms
我想更改 OctoberCMS 后端菜单组织。 例子: 我想从 Rainlab 插件静态页面 - 菜单的侧边栏移动到 OctoberCMS CMS 侧边栏,或者可以将 Rainlab 插件静态页面 - 菜单添加到主菜单。
【问题讨论】:
标签: menu backend octobercms
您可以使用 registerNavigation 函数在您的 plugin.php 文件中执行此操作。例如这段代码定义了顶部菜单和侧边栏菜单:
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');
【讨论】:
我知道这可能很明显,但我还是会说出来以确保它。如果您正在考虑更改不是您创作的插件提供的后端菜单项的外观或位置,请不要自己对这些文件进行任何更改。每次更新该插件时,您都会丢失所有此类自定义更改。
一个更好的主意是创建您自己的插件,使用 3rd-party 插件作为依赖项,然后对这个新插件进行必要的更改。
示例:您希望更改 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() 方法来完成这个extension 插件所需的工作。您可能必须从原始父插件复制一些您确实想要保留的菜单项,但现在您可以添加一些您自己的或删除您不需要的项目。
有关如何执行此操作的更多详细信息在这里 -> http://octobercms.com/docs/plugin/extending#extending-backend-menu
希望这不会太复杂并且可以帮助您。
【讨论】: