Я нашел что-то: https://github.com/OleVik/grav-plugin-adminidenticons
Он переопределяет часть плагина администратора.
Шаг 1. Создайте плагин
Существует множество учебные пособия, как это сделать.
У меня есть следующая файловая структура внутри папки с плагинами:
user/plugins
-- myplugin
---- blueprints.yaml
---- myplugin.php
---- myplugin.yaml
Шаг 2. Копирование файлов
/user/plugins/admin/themes/grav/templates/forms/fields/pages/pages.html.twig
в /user/plugins/myplugin/admin/themes/grav/templates/forms/fields/pages/pages.html.twig
/user/plugins/admin/themes/grav/templates/partials/blueprints-new.html.twig
до /user/plugins/myplugin/admin/themes/grav/templates/partials/blueprints-new.html.twig
Не забудьте добавить фрагмент, который я разместил выше, в скопированный pages.html.twig
. Вы можете оставить blueprints-new.html.twig
неотредактированным, но вам понадобится частичное внутри вашей папки плагинов, чтобы Twig мог загрузить локальный pages.html.twig
.
Шаг 3: PHP
Редактировать myplugin.php
<?php
namespace Grav\Plugin;
use Grav\Common\Grav;
use Grav\Common\Plugin;
use Grav\Common\Page\Page;
use RocketTheme\Toolbox\Event\Event;
class MyPluginPlugin extends Plugin
{
public static function getSubscribedEvents() {
return [
'onPluginsInitialized' => ['onPluginsInitialized', 0],
];
}
public function onPluginsInitialized()
{
/** @var Uri $uri */
$uri = $this->grav['uri'];
$route = $this->config->get('plugins.admin.route');
if ($route && preg_match('#' . $route . '#', $uri->path())) {
$this->enable([
'onPageInitialized' => ['onPageInitialized', 0],
'onAdminTwigTemplatePaths' => ['onAdminTwigTemplatePaths', 0]
]);
}
}
/**
* Load custom CSS into backend
*
*/
public function onPageInitialized()
{
$assets = $this->grav['assets'];
$assets->addCss('user/plugins/myplugin/style/custom-backend.css', 1);
}
/**
* Register templates and page
*
* @param RocketTheme\Toolbox\Event\Event $event Event handler
*
* @return array
*/
public function onAdminTwigTemplatePaths($event)
{
$event['paths'] = array_merge(
$event['paths'],
[__DIR__ . '/admin/themes/grav/templates']
);
return $event;
}
}
Бонус: скрытие уникальных шаблонов страниц
Иногда вы создаете шаблоны страниц, которые предполагается использовать один раз на одной странице. Так же, как работает Grav, они будут отображаться в списке при создании новой страницы. Конечно, вы не хотите, чтобы ваши редакторы проявили творческий подход к шаблонам страниц, поэтому лучше их скрыть.
Если вы на самом деле также читаете код, который вставляете при копировании, вы обратите внимание, что есть функция onPageInitialized()
, которая загружает файл CSS в серверную часть.
Обновите ваши файлы:
user/plugins
-- myplugin
---- style
------ custom-backend.scss
------ custom-backend.css
---- blueprints.yaml
---- myplugin.php
---- myplugin.yaml
Редактируйте custom-backend.scss
// hide unique templates
.selectize-dropdown-content {
.option {
$hide_values: "this-template", "home", "that-template";
@each $current_value in $hide_values {
&[data-value="#{$current_value}"] {
display: none;
}
}
}
}
Установите $hide_values
для шаблонов страниц, которые вы хотите скрыть в бэкэнде. Я использую CSS, таким образом вы можете включить их с помощью инспектора браузера, если они вам понадобятся. Конечно, не забудьте скомпилировать ваш S CSS.
Я знаю, что это превратилось в полноценный учебник, но наличие модульных страниц, засоряющих список страниц, на самом деле является проблемой, с которой я столкнулся в нескольких проектах. и я никогда не нашел что-то в Интернете. К сожалению, у меня действительно нет способа опубликовать sh правильно, поэтому я надеюсь, что когда-нибудь кто-нибудь наткнется на этот вопрос и разместит его в каком-то блоге, где он и есть.
Спасибо!