wbrowar / craft-admin-bar
Craft CMS 登录用户的前端快捷方式。
Requires
- craftcms/cms: ^5.0.0
- nystudio107/craft-code-editor: ^1.0.18
This package is auto-updated.
Last update: 2024-09-11 21:03:50 UTC
README
管理栏由两部分组成
- 管理栏组件 是一个独立的网络组件,可以添加到任何项目的前端。
- 管理栏(此插件)提供插件设置、Twig 标签,并检查用户是否已登录,以确定管理栏组件是否应在页面上显示。
如果您正在创建一个具有 Twig 前端的重工 CMS 网站,您可以使用此插件及其 Twig 标签将管理栏添加到您的网站前端。
如果您正在创建一个无头网站或静态缓存的网站,您可能不需要此插件,在这种情况下,您可以直接将 管理栏组件 添加到您网站的 JavaScript 中(通过打包器或 <script>
标签)。
⚠️ 管理栏的 composer 包名已从
wbrowar/adminbar
更改为wbrowar/craft-admin-bar
。更新您的 composer.json 以指向 Packagist 上的新包。
要求
- Craft 4.0.0
安装
要安装插件,您可以在 Craft 插件商店 中找到它,或按照以下说明操作
-
打开您的终端并转到您的 Craft 项目
cd /path/to/project
-
然后告诉 Composer 需要该插件
composer require wbrowar/craft-admin-bar
-
在控制面板中,转到设置 → 插件,然后单击“安装”按钮安装管理栏。
将管理栏添加到您的 Twig 模板
要将管理栏添加到您的网站,请在您的 Twig 模板中添加 {{ adminBar() }}
标签。当权限可以查看 CP 的用户登录到您的网站时,管理栏将在包含此标签的任何页面上显示。
在您的插件设置中,您可以使用 CSS 自定义属性来覆盖管理栏的外观以匹配您网站的外观和感觉。
您可以通过传递参数数组来更改管理栏的外观和功能。在此示例中,您可以通过传递“编辑”链接时希望编辑的条目来传递条目。
{{ adminBar({ entry: entry }) }}
以下是可用参数的列表
向管理栏添加文本元素
可以通过将对象添加到 textElements
参数中来将纯文本和标签添加到管理栏。对象属性可以包括任何属性,如 <admin-bar-text>
元素所接受,如文档中所述。每个对象将添加一个新的文本元素,每个对象中的属性将使用 Craft 的 attr()
方法添加。
例如,这将添加一行文本,显示当前条目部分的条目数量
{{ adminBar({ entry: entry ?? null, textElements: [ { 'label-content': craft.entries.section(entry.section.handle).count(), 'text-content': 'Entries in this section' }, ], }) }}
配置设置
配置文件使您能够调整管理栏在多个环境中的外观和功能。它还允许您为管理栏创建附加链接,并允许通过这些附加链接调用插件操作。
要将配置文件添加到您的网站,请在 /config/admin-bar.php
创建一个返回设置数组的文件
<?php return array( // Settings go here );
以下是可以通过配置文件更改的设置
管理员栏
附加链接
您可以使用配置文件通过传递到名为 additionalLinks
的数组中的属性来向管理员栏添加链接。在 config.php
文件中有注释的示例,以下是您可以使用来创建链接的属性。
优化CSS和JS交付以提升性能
默认情况下,使用 {{ adminBar() }}
将渲染HTML,并将链接到使管理员栏工作的静态CSS和JS资源。CSS加载在 <head>
中的文件中,JavaScript加载在 <body>
标签底部的文件中——延迟加载,以避免阻塞渲染。
因为这些会增加对服务器的额外请求,您可能更愿意将CSS和JS代码移动到您的Twig模板中。首先,为了关闭默认的加载行为,向您的嵌入代码中添加 useCss
和 useJs
参数,并将它们都设置为 false
{{ adminBar({ entry: entry ?? null, useCss: false, useJs: false, }) }}
这会关闭向页面加载任何JavaScript或CSS。要重新加载这些资源,您可以在您的Twig模板的任何位置添加以下内容
{% css adminBarCssFile({ contents: true }) %} {% css adminBarOnPageCss() %} {% js adminBarJsFile({ contents: true }) %}
adminBarCssFile()
获取与 Admin Bar Component 一起提供的CSS并将其添加到页面中。- 将
contents
参数设置为true
将使用PHP的file_get_contents()
方法将CSS代码作为字符串从文件中提取出来。
- 将
adminBarOnPageCss()
方法添加一些特定于管理员栏插件的CSS,以及任何在自定义CSS管理员栏插件设置中添加的CSS。adminBarJsFile()
获取与 Admin Bar Component 一起提供的JavaScript并将其添加到页面中。contents
参数也使用file_get_contents()
来获取放置在<script>
标签内的JavaScript代码。
注意
如何嵌入静态资源由您决定。通常,减少服务器请求会更好,但在HTML标记的每个页面上添加几个额外的KB可能不如缓存和加载静态 .css
和 .js
文件那样高效。
动态加载管理员栏
使用Blitz静态缓存与管理员栏结合使用
Blitz Craft CMS插件 提供一个名为 includeDynamic()
的Twig函数,允许您在静态缓存的页面上渲染Twig模板。使用此函数,管理员栏可以动态地包含到您的模板中,以便在缓存和未缓存的页面上工作。
安装Blitz后,您可以将 {{ adminBar() }}
方法从您的Twig模板中移到您的 templates
目录中的单独Twig文件。对于此示例,我们将以下代码添加到位于 /templates/includes/admin-bar.twig
的文件中。
{% set entry = entryUri ?? false ? craft.entries.uri(entryUri).one() : null %} {{ adminBar({ entry: entry ?? null, useCss: false, useJs: false, }) }}
请注意,useCss
和 useJs
都设置为 false
。这是因为从动态包含注册CSS和JS文件在静态缓存的页面上不会工作。您可以在这里设置任何其他您想要的 adminBar()
参数。
接下来,在您希望嵌入管理员栏的地方调用 dynamicInclude()
函数
{{ craft.blitz.includeDynamic('includes/admin-bar.twig', { entryUri: entry.uri ?? '' }) }} {% css adminBarCssFile() %} {% css adminBarOnPageCss() %} {% js adminBarJsFile() with { defer: true, type: 'module' } %}
您可以将参数传递给 includeDynamic()
,因此我们可以传递当前页面条目的URI——这将用于确定管理员栏将使用什么页面作为“编辑”按钮。
为了将管理员栏的CSS和JS加载到前端,我们可以在模板的任何位置使用管理员栏内置的Twig函数。
版本发布
发布说明可以在 CHANGELOG.md 中找到
支持版本
以下是关于添加和支持管理员栏未来功能的总体目标
- 插件的新功能将被添加到当前主插件版本,该版本针对Craft CMS的当前发布版本。
- 针对Craft CMS之前发布的较新主要版本的最新主要插件版本将得到支持,并包含对该版本Craft CMS更新中引入的bug修复。
- 之前的主要插件版本将仅获得安全相关的更新——如有必要。
由Will Browar提供