Оглавление
Проблема
Что ж... Я сделал плагин для загрузки своих последних YouTube видосов, и в моём плагине присутствуют настройки.
Но при клике на меню настроек - они загружаются в специальном разделе October CMS с настройками.
Меня как пользователя это напрягает, и я как программист, хочу сделать так, чтобы загрузка настроек происходила в том же разделе YT, что и сами записи видео.
Решение
Приступаем к реализации. Первым делом, нам нужно создать контроллер в плагине YT, чтобы мы могли его полноценно загружать. Сделать это можно либо ручками, либо с помощью команды php artisan create:controller Frukt.YT Settings. После создания контроллера через вышеописанную команду ремесленника OctoberCMS - мы видим что ещё автоматически создалась папка settings с ненужными нам вещами. Её мы просто удаляем:
Сам контроллер должен выглядеть следующим образом:
namespace Frukt\YT\Controllers;
use BackendMenu;
use Redirect;
use Request;
use System\Controllers\Settings as SettingsController;
class Settings extends SettingsController
{
protected $author; // Автор плагина
protected $plugin; // Имя плагина
protected $code = 'settings'; // Регистрационный код настроек - прописан в Plugin.php в регистрации настроек
protected $mainMenuId = 'main-menu-item'; // Код главной менюшки, либо в plugin.yaml либо в Plugin.php
protected $sideMenuId = 'side-menu-item2'; // Код дополнительного меню, также либо в plugin.yaml либо в Plugin.php
public function __construct()
{
parent::__construct();
$this->viewPath = base_path().'/modules/system/controllers/settings';
// Возьмем имя автора плагина и самого плагина
list($this->author, $this->plugin) = explode('\\', get_class());
BackendMenu::setContext(sprintf('%s.%s', $this->author, $this->plugin), $this->mainMenuId, $this->sideMenuId);
}
public function index()
{
$url = sprintf('%s/update/%s/%s/%s', Request::url(), $this->author, $this->plugin, $this->code);
return Redirect::to($url);
}
}
Ну и осталось дело за малым - переписать ссылочку на наш новый контроллер:
navigation:
main-menu-item:
label: YT
url: /
icon: icon-youtube
sideMenu:
side-menu-item:
label: Видео
url: frukt/yt/ytvideos
icon: icon-youtube-play
side-menu-item2:
label: Настройки
url: frukt/yt/settings # Новая ссылка!
#url: /system/settings/update/frukt/yt/settings
icon: icon-cogs
Результат
Готово! Теперь наши настройки грузятся внутри контроллера плагина October CMS.
Если было интересно и полезно, не забудьте подписаться на мой YouTube канал - там вы найдетё много новых плюшенций на тему October CMS и программирования в целом.
Ваш Михаил Фрускейт.