Основное меню бэкэнда OctoberCMS с подменю различных плагинов

У меня есть одно требование в OctoberCMS, которое я хочу реализовать в бэкэнде (на стороне администратора), и здесь ниже то, что я хочу реализовать.

я использую Плагин Builder и я уже создал так много плагинов, которые отображаются в верхней части заголовка с их соответствующими именами и ссылками в админке (бэкэнд). И если я нажимаю на нее, я могу делать все, что захочу (операция CRUD), которая прекрасно работает для всех этих плагинов.

Но теперь я хочу только одно главное меню (скажем, например — «Плагины«) и если я нажму на него или наведу на него, я должен увидеть все перечисленные плагины, которые я добавлю, и могу добавить в будущем, если я создам больше.

Я должен быть в состоянии видеть эти ссылки плагинов при наведении или на левой стороне, и он должен иметь возможность добавлять / удалять эти ссылки.

В настоящее время я пытаюсь сделать это в плагине Builder внутреннее меню но я не могу этого сделать, так как это противоречит код поле для этих вкладок меню. Поэтому сейчас я с нетерпением жду другого пути, если смогу реализовать.

Может ли кто-нибудь наставить меня, как мне этого добиться?

0

Решение

Вы можете управлять меню, создав функцию boot () в вашем плагине.

Освобождать от
https://github.com/scottbedard/blogtags/blob/master/Plugin.php#L54

    class Plugin extends PluginBase
{

public function pluginDetails()
{
[..]
}

public function boot()
{
// extend the blog navigation
Event::listen('backend.menu.extendItems', function($manager) {
$manager->addSideMenuItems('RainLab.Blog', 'blog', [
'tags' => [
'label' => 'bedard.blogtags::lang.navigation.tags',
'icon'  => 'icon-tags',
'code'  => 'tags',
'owner' => 'RainLab.Blog',
'url'   => Backend::url('bedard/blogtags/tags')
]
]);
});
}

Для удаления пунктов меню вы можете использовать

  • $ Manager-> removeMainMenuItem ()
  • $ Manager-> removeSideMenuItem ()

Документация по API для менеджера навигации: https://octobercms.com/docs/api/backend/classes/navigationmanager

1

Другие решения

Хорошо, ребята, в конце концов, я смог заставить его работать. Это то, что я сделал ниже

Скажем, например, у меня есть 2 плагина, называемые как партнеры а также свойства.

В партнеры плагин, я написал что-то вроде этого в моем plugin.php файл.

плагины \ technobrave \ Партнеры \ plugin.php

<?php namespace Technobrave\Partners;

use System\Classes\PluginBase;
use Backend;
use Event;
class Plugin extends PluginBase
{

public function registerNavigation()
{
return [
'modules' => [
'label'       => 'Modules',
'url'         => Backend::url('technobrave/properties/properties'),
'icon'        => 'icon-bars',
'permissions' => ['Technobrave.Property.*'],

'sideMenu'    => [
'properties' => [
'label' => 'Properties',
'icon'        => 'icon-home',
'url'         => Backend::url('technobrave/properties/properties'),
'permissions' => ['Technobrave.Property.*']
],
'partner' => [
'label' => 'Partners',
'icon'        => 'icon-thumbs-up',
'url'         => Backend::url('technobrave/partners/partners'),
'permissions' => ['Technobrave.Partner.*']

],
]
]
];
}

Здесь, как вы можете видеть выше, ссылка на меню моего заголовка будет перенаправлена ​​на свойства плагин в соответствии с моим требованием и для меню левой боковой панели, моя первая ссылка также будет перенаправлена ​​на свойства плагин и следующая ссылка подменю будут перенаправлены на партнеры плагин.

Затем я пошел к контроллеру Партнеров и поставил код примерно так:

плагины \ technobrave \ партнеры \ Контроллеры \ Partners.php

<?php namespace Technobrave\Partners\Controllers;

use Backend\Classes\Controller;
use BackendMenu;

class Partners extends Controller
{
public function __construct()
{
parent::__construct();
BackendMenu::setContext('Technobrave.Partners', 'modules', 'partner');
}
}

Здесь выше, как вы можете видеть, у меня есть только выполненный плагин меню на партнеров, чтобы можно было показать его, когда я нахожусь в списке партнеров, или в операции CRUD, или где-то еще.

Аналогичная вещь, которую я сделал для свойства плагин, чтобы иметь возможность показывать меню в свойства плагин. Вот так выглядит мой код.

плагины \ technobrave \ свойства \ Контроллеры \ Properties.php

<?php namespace Technobrave\Properties\Controllers;
use Backend\Classes\Controller;
use BackendMenu;
class Properties extends Controller
{
public function __construct() {
parent::__construct();
BackendMenu::setContext('Technobrave.Partners', 'modules', 'properties');
}
}

Одна вещь, чтобы отметить здесь в этом коде BackendMenu::setContext('Technobrave.Partners', 'modules', 'properties');

Последний аргумент отличается от того, что мы положили в партнеры плагин.
BackendMenu::setContext('Technobrave.Partners', 'modules', 'properties');
Это должно установить как выбранное по умолчанию меню из списка на левой боковой панели.

Надеюсь это поможет.

1

По вопросам рекламы [email protected]