zucchi/widgets

备选小部件模块

安装: 28

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 4

分支: 1

开放问题: 0

类型:silverstripe-module

dev-master 2016-01-06 09:14 UTC

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 文件

创建小部件

虽然我们预计将来会提供一些默认的小部件,可以与该模块一起使用,但创建一个新的小部件实际上非常简单。以下是创建小部件的最低要求说明:

  1. 为您的 小部件 创建一个文件夹
  2. 在您的新文件夹中创建一个空的 _config.php
  3. 在您的文件夹中创建一个 {WidgetName}.php 文件,其中包含类 class {WidgetName} extends Widget {}
  4. 在您的文件夹中创建一个 {WidgetName}.ss 文件,其中包含您的小部件所需的模板

在您的新 PHP 类中,您可以像定义任何其他 DataObject 一样定义字段和 getCMSFields() 方法

渲染

每个小部件都需要一个 .ss 文件,该文件与 Widget::forTemplate() 方法结合使用。

还有一个帮助方法可以在模板中使用 $GetWidgets,它将根据您在 GridField 中定义的排序顺序返回您的 小部件。

渲染小部件的最简单方法是执行以下操作

<% loop $GetWidgets() %>
    {$forTemplate}
<% end_loop %>