lukaskleinschmidt / kirby-snippet-controller
Kirby Snippet Controller
2.2.0
2023-11-06 15:21 UTC
Requires
- php: ^8.1
- getkirby/composer-installer: ^1.2
README
以与页面控制器类似的方式定义代码片段控制器。
如何使用它
默认情况下,插件将尝试在您的 snippets
目录中查找控制器。让我们看看一个示例 header
代码片段。
📁 snippets ├─ 📄 header.controller.php └─ 📄 header.php
// header.controller.php // The return value can be a callback return function ($site) { return [ 'title' => $site->title(), ]; }; // Or you can simply return an array. return [ 'title' => site()->title(), ];
您还可以在插件中定义代码片段控制器。
Kirby::plugin('superwoman/superplugin', [ 'snippets' => [ // Refer to a file 'header.controller' => __DIR__ . '/snippets/header.controller.php', // Return an array 'header.controller' => [ 'title' => site()->title(), ], // Return a callback 'header.controller' => function ($site) { return [ 'title' => $site->title(), ]; }, ], ]);
控制器中的可用回调参数
您可以访问在代码片段中可访问的所有变量。如果您向代码片段传递额外的数据,您也可以在控制器中访问它。
snippet('header', data: ['title' => 'My Title']) // header.controller.php return function (string $title = 'Default Title', ...$args) { return [ 'title' => $title, ]; };
注意 自版本
2.1.0
起您可以在使用控制器回调时覆盖变量。
snippet('header', data: ['size' => $page->size()]) // header.controller.php return function (Field|string $size = null) { if ($size instanceof Field) { $size = $size->value(); } $size = match ($size) { 'small' => 'height: 50vh', 'medium' => 'height: 80vh', default => 'height: 100vh', }; return [ 'size' => $size, ]; };
注意 自版本
2.2.0
起您可以在控制器回调中防止代码片段渲染。
snippet('header', data: ['size' => $page->size()]) // header.controller.php return function (Field|string $size = null) { if (is_null($size)) { snippet_prevent(); } return [ 'size' => $size, ]; };
命名约定
默认情况下,插件通过将 .controller
添加到代码片段名称来搜索控制器。您可以在选项中更改名称解析器。更改名称也会影响插件定义的控制器。
// config.php return [ 'lukaskleinschmidt.snippet-controller' => [ // The default resolver 'name' => fn (string $name) => $name . '.controller', // You might want to store controllers in a separate folder 'name' => fn (string $name) => 'controllers/' . $name, ], ];
商业用途
此插件是免费的。如果您在商业项目中使用它,请考虑捐款。
安装
下载
下载并将此存储库复制到 /site/plugins/snippet-controller
。
Git 子模块
git submodule add https://github.com/lukaskleinschmidt/kirby-snippet-controller.git site/plugins/snippet-controller
Composer
composer require lukaskleinschmidt/kirby-snippet-controller
许可协议
MIT