afbora/kirby-blade

此包已被弃用且不再维护。未建议替代包。

为 Kirby 3 启用 Laravel Blade 模板引擎

安装: 409

依赖: 0

建议者: 0

安全: 0

星星: 21

关注者: 3

分支: 5

开放问题: 6

类型:kirby-plugin

2.0.0-rc.2 2022-06-23 10:32 UTC

This package is auto-updated.

Last update: 2022-08-22 09:32:01 UTC


README

更新:2022年6月27日

现在有一个官方的 Laravel Blade 分支

https://github.com/lukasleitsch/kirby-blade

Source Download Open Issues Last Commit Release License

Kirby Blade 使用 Laravel illuminate/view 9.x 包,并兼容 Kirby 3。

此包可以为您的 Kirby 应用程序启用 Laravel Blade

Kirby 兼容性表

Kirby 版本 兼容插件版本
^3.6 ^1.9
^3.7 ^2.0

安装 Kirby 之前的重要提示

您应该从应用程序的根 index.php 中覆盖 Kirby 的 e() 辅助函数。因为 Laravel Blade 也有一个名为 e() 的辅助函数。

// override Kirby `e()` helper for Blade plugin
define('KIRBY_HELPER_E', false);

安装

使用 composer 安装

composer require afbora/kirby-blade

作为 git 子模块添加

git submodule add https://github.com/afbora/kirby-blade.git site/plugins/kirby-blade

手动

  • 下载最新版本
  • 解压下载的文件
  • 将解压的文件夹复制/粘贴到您的 /site/plugins 文件夹

Blade 是什么?

根据 Laravel Blade 文档是

Blade 是 Laravel 提供的简单但强大的模板引擎。与其他流行的 PHP 模板引擎不同,Blade 不限制您在视图中使用纯 PHP 代码。事实上,所有 Blade 视图都被编译成纯 PHP 代码并缓存,直到它们被修改,这意味着 Blade 不会给您的应用程序增加任何开销。Blade 视图文件使用 .blade.php 文件扩展名。

用法

您可以使用 Blade 的强大功能,如 布局表单子视图组件指令以及您的自定义 if 语句。

有关 Laravel Blade 的所有文档都在 官方文档 中。

选项

该包的默认值是

选项 默认 描述
afbora.blade.templates site/templates (字符串) 模板的位置
afbora.blade.views site/cache/views (字符串) 缓存的视图位置
afbora.blade.directives [] (数组) 自定义指令的数组
afbora.blade.ifs [] (数组) 自定义 if 语句的数组
afbora.blade.minify.enabled false (布尔值) 启用/禁用最小化 HTML 输出
afbora.blade.minify.options [] (数组) 支持的压缩选项

所有值都可以在 config.php 文件中更新。

模板

默认模板文件夹是 site/templates 目录或您定义的 templates 目录,但您可以轻松更改它。

'afbora.blade.templates' => '/theme/default/templates',

视图

所有生成的视图都存储在 site/cache/views 目录或您定义的 cache 目录,但您可以轻松更改它。

'afbora.blade.views' => '/site/storage/views',

指令

默认情况下,Kirby Blade 包含以下指令

@asset($path)
@csrf()
@css($path)
@dump($variable)
@e($condition, $value, $alternative)
@get($key, $default)
@gist($url)
@go($url, $code)
@h($string, $keepTags)
@html($string, $keepTags)
@js($path)
@image($path, $attr) // @image('forrest.jpg', 'url')
@kirbytag($type, $value, $attr)
@kirbytags($text, $data)
@kirbytext($text, $data)
@kirbytextinline($text)
@kt($text)
@markdown($text)
@option($key, $default)
@page($key, $attr) // @page('blog', 'title')
@param($key, $fallback)
@site($attr) // @site(title')
@size($value)
@smartypants($text)
@snippet($name, $data)
@svg($file)
@t($key, $fallback)
@tc($key, $count)
@tt($key, $fallback, $replace, $locale)
@u($path, $options)
@url($path, $options)
@video($url, $options, $attr)
@vimeo($url, $options, $attr)
@widont($string)
@youtube($url, $options, $attr)

但您可以创建自己的

'afbora.blade.directives' => [
    'greeting' => function ($text)
    {
        return "<?php echo 'Hello: ' . $text ?>";
    },
],

Kirby 助手文档

https://getkirby.com/docs/reference/templates/helpers

如果语句

像指令一样,您可以创建自己的如果语句

'afbora.blade.ifs' => [
    'logged' => function ()
    {
        return !!kirby()->user();
    },
],

声明后,您可以使用它如下

@logged
    Welcome back {{ $kirby->user()->name() }}
@else
    Please Log In
@endlogged

压缩

设置

'afbora.blade.minify.enabled' => true,
'afbora.blade.minify.options' => [
    'doOptimizeViaHtmlDomParser' => true, // set true/false or remove line to default
    'doRemoveSpacesBetweenTags'  => false // set true/false or remove line to default
],

可用的压缩选项

选项 描述
doOptimizeViaHtmlDomParser 通过 "HtmlDomParser()" 优化 HTML
doRemoveComments 移除默认的 HTML 注释(取决于 "doOptimizeViaHtmlDomParser(true)")
doSumUpWhitespace 汇总 Dom 中的额外空白(取决于 "doOptimizeViaHtmlDomParser(true)")
doRemoveWhitespaceAroundTags 移除标签周围的空白(取决于 "doOptimizeViaHtmlDomParser(true)")
doOptimizeAttributes 优化 HTML 属性(取决于 "doOptimizeViaHtmlDomParser(true)")
doRemoveHttpPrefixFromAttributes 从属性中移除可选的 "http:-" 前缀(取决于 "doOptimizeAttributes(true)")
doRemoveHttpsPrefixFromAttributes 从属性中移除可选的 "https:-" 前缀(取决于 "doOptimizeAttributes(true)")
doKeepHttpAndHttpsPrefixOnExternalAttributes 保留所有外部链接的 "http:-" 和 "https:-" 前缀
doMakeSameDomainsLinksRelative 通过从属性中删除域名,使一些链接相对化
doRemoveDefaultAttributes 移除默认值(取决于 "doOptimizeAttributes(true)")
doRemoveDeprecatedAnchorName 移除过时的锚点跳转(取决于 "doOptimizeAttributes(true)")
doRemoveDeprecatedScriptCharsetAttribute 移除过时的 charset 属性 - 浏览器将使用 HTTP-Header 中的 charset,无论如何
doRemoveDeprecatedTypeFromScriptTag 移除过时的脚本 MIME 类型(取决于 "doOptimizeAttributes(true)")
doRemoveDeprecatedTypeFromStylesheetLink 移除 CSS 链接的 "type=text/css"(取决于 "doOptimizeAttributes(true)")
doRemoveDeprecatedTypeFromStyleAndLinkTag 从所有链接和样式移除 "type=text/css"(取决于 "doOptimizeAttributes(true)")
doRemoveDefaultMediaTypeFromStyleAndLinkTag 从所有链接和样式移除 "media=all"(取决于 "doOptimizeAttributes(true)")
doRemoveDefaultTypeFromButton 从按钮标签中移除 type="submit"(取决于 "doOptimizeAttributes(true)")
doRemoveEmptyAttributes 移除一些空属性(取决于 "doOptimizeAttributes(true)")
doRemoveValueFromEmptyInput 从空 <input> 中移除 'value=""'(取决于 "doOptimizeAttributes(true)")
doSortCssClassNames 排序 css-class-names,以获得更好的 gzip 结果(取决于 "doOptimizeAttributes(true)")
doSortHtmlAttributes 排序 html-attributes,以获得更好的 gzip 结果(取决于 "doOptimizeAttributes(true)")
doRemoveSpacesBetweenTags 移除 dom 中的更多(更具侵略性)空白(默认禁用)
doRemoveOmittedQuotes 移除引号,例如 class="lall" => class=lall
doRemoveOmittedHtmlTags 移除省略的 html 标签,例如 <p>lall</p> => <p>lall
您可以从 HtmlMin 库中获取详细的信息: voku/HtmlMin