1 回答

TA貢獻2021條經(jīng)驗 獲得超8個贊
我發(fā)現(xiàn)了一些東西:https
://github.com/OleVik/grav-plugin-adminidenticons 它覆蓋了部分管理插件。
第 1 步:創(chuàng)建插件
有很多教程如何做到這一點。
我的插件文件夾中有以下文件結(jié)構(gòu):
user/plugins
-- myplugin
---- blueprints.yaml
---- myplugin.php
---- myplugin.yaml
第 2 步:復(fù)制文件
/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
不要忘記將我上面發(fā)布的片段添加到復(fù)制的pages.html.twig. 您可以保留blueprints-new.html.twig未編輯的內(nèi)容,但您需要插件文件夾中的部分內(nèi)容才能讓 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;
}
}
獎勵:隱藏獨特的頁面模板
有時,您創(chuàng)建的頁面模板應(yīng)該只在一個頁面上使用一次。就像 Grav 的工作方式一樣,在創(chuàng)建新頁面時它們?nèi)詴霈F(xiàn)在列表中。當然,您不希望您的編輯對頁面模板進行創(chuàng)意,因此最好將它們隱藏起來。
如果您實際上也在閱讀您正在復(fù)制粘貼的代碼,您會注意到有一個函數(shù)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;
}
}
}
}
將 設(shè)置為$hide_values要在后端隱藏的頁面模板。我使用 CSS,這樣您可以在需要時使用瀏覽器檢查器重新啟用它們。當然,不要忘記編譯你的 SCSS。
我知道這變成了一個成熟的教程,但是讓模塊化頁面亂扔頁面列表實際上是我現(xiàn)在在多個項目中遇到的一個問題,我從來沒有在網(wǎng)上找到過任何東西。不幸的是,我真的沒有辦法正確地發(fā)布這個,所以我希望有一天有人會偶然發(fā)現(xiàn)這個問答并將它放在它所屬的某個網(wǎng)絡(luò)博客上。
- 1 回答
- 0 關(guān)注
- 121 瀏覽
添加回答
舉報