zucchi / widgets
备选小部件模块
Requires
- silverstripe/cms: 3.*
- silverstripe/framework: 3.*
Conflicts
This package is not auto-updated.
Last update: 2024-09-14 16:06:18 UTC
README
备选小部件模块。
本模块受到了许多其他指南和现有模块的启发,这些模块提供了小部件类型的功能。
虽然它不如 silverstripe/widgts 模块那样美观或功能完善,但它允许你将任何类型的表单元素作为小部件的一部分使用,这是目前 silverstripe widgets 模块无法做到的(尝试在 widget 中使用 UploadField)
注意:请注意,该模块目前无法处理用于小部件的表单请求。然而,这是我们希望在将来添加的功能
配置
本模块基于扩展,因此您需要配置它以与您的 Silverstripe 网站一起工作。
为此,您可以通过在您的 yaml 配置中添加以下内容来将扩展与所选页面注册:
Page: extensions: - WidgetPageExtension
这将附加一个单一的关系到小部件。这本质上充当侧边栏/小部件区域,并将自动更新页面 CMS 字段。
如果您希望在一个页面上有多个小部件区域,您可以手动定义一个新的 $many_many
关系到小部件,并将适当的字段添加到您的页面 getCMSFields() 方法中。为了获得灵感,请查看 code/WidgetPageExtension.php 文件
创建小部件
虽然我们预计将来会提供一些默认的小部件,可以与该模块一起使用,但创建一个新的小部件实际上非常简单。以下是创建小部件的最低要求说明:
- 为您的 小部件 创建一个文件夹
- 在您的新文件夹中创建一个空的 _config.php
- 在您的文件夹中创建一个 {WidgetName}.php 文件,其中包含类
class {WidgetName} extends Widget {}
- 在您的文件夹中创建一个 {WidgetName}.ss 文件,其中包含您的小部件所需的模板
在您的新 PHP 类中,您可以像定义任何其他 DataObject 一样定义字段和 getCMSFields() 方法
渲染
每个小部件都需要一个 .ss 文件,该文件与 Widget::forTemplate() 方法结合使用。
还有一个帮助方法可以在模板中使用 $GetWidgets,它将根据您在 GridField 中定义的排序顺序返回您的 小部件。
渲染小部件的最简单方法是执行以下操作
<% loop $GetWidgets() %> {$forTemplate} <% end_loop %>