小工具
创建小部件,在网站不同位置渲染小块内容。
为了确定小部件内容的渲染位置,管理面板设有“小部件”部分,用于发布由主题定义的特定位置的小部件。扩展和主题都可以附带小部件,开发过程没有区别。
定义控件位置
你可以在主题中定义任意数量的小部件位置。index.php
'positions' => [
'sidebar' => 'Sidebar',
'footer' => 'Footer',
],
渲染控件
要渲染在控件位置内发布的任何内容,可以使用主题文件中的视图渲染器实例。views/template.php
<?php if ($view->position()->exists('sidebar')) : ?>
<?= $view->position('sidebar') ?>
<?php endif; ?>
注册一个新的控件类型
要注册一个新的控件类型,你可以在文件中利用该属性。widgetsindex.php
'widgets' => [
'widgets/hellowidget.php'
],
定义一个新的控件类型
在内部,Pagekit 中的小部件是一个模块。因此,它通过模块定义定义:一个具有特定属性集合的PHP数组。
widgets/hellowidget.php:
<?php
return [
'name' => 'hello/hellowidget',
'label' => 'Hello Widget',
'events' => [
'view.scripts' => function ($event, $scripts) use ($app) {
$scripts->register('widget-hellowidget', 'hello:js/widget.js', ['~widgets']);
}
],
'render' => function ($widget) use ($app) {
// ...
return $app->view('hello/widget.php');
}
];
这个例子需要以下两个文件来在前端渲染小部件,一个是 JavaScript 文件,另一个是 PHP 文件。
js/widget.js:
window.Widgets.components['system-login:settings'] = {
section: {
label: 'Settings'
},
template: '<div>Your form markup here</div>',
props: ['widget', 'config', 'form']
};
views/widget.php:
<p>Hello Widget output.</p>
注释
一个完整小部件的好例子位于 Pagekit 核心中。app/system/modules/user/widgets/login.php