arillo / silverstripe-elements
组件
Requires
- dev-master
- 2.x-dev
- 2.3.x-dev
- 2.2.9
- 2.2.8
- 2.2.7
- 2.2.6
- 2.2.5
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.9
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.x-dev
- 1.2.1
- 1.1.x-dev
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.0.18
- 0.0.17
- 0.0.16
- 0.0.15
- 0.0.14
- 0.0.13
- 0.0.12
- 0.0.11
- 0.0.10
- 0.0.9
- 0.0.8
- 0.0.7
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-dev
- dev-status-improvements
This package is auto-updated.
Last update: 2024-09-12 17:29:21 UTC
README
通过多个命名元素关系装饰 SiteTree 类,通过 has_many "Elements" 关系。
要求
SilverStripe CMS ^4.0
对于此模块的 SilverStripe 3.x 兼容版本,请参阅 1 分支,或 0.x 版本线。
待办事项
- 编写测试
- 编写更好的文档
使用方法
在 _config/elements.yml 中设置你的关系类型,例如
Page: element_relations: Elements: - Element - DownloadElement Downloads: - DownloadElement
在此示例中,我们正在创建 2 个元素关系到页面,一个称为 Elements,另一个称为 Downloads。
为了使其工作,Element
类应该继承自 ElementBase
,其中可以定义所有附加字段,例如
class Element extends ElementBase { private static $singular_name = 'Base element', $db = [ 'Title' => 'Text', 'Subtitle' => 'Text', ... .. . ] ; }
在 SiteTree 实例中,元素关系现在可以通过以下方式访问
$pageInst->ElementsByRelation('Elements'); $elementInst->ElementsByRelation('Elements');
在模板中使用它们
<% loop $ElementsByRelation(Elements) %> $Render($Pos, $First, $Last, $EvenOdd) <% end_loop %>
注意:我们传递了 $Pos, $First, $Last 和 $EvenOdd 值,以便在模板中作为 $IsPos, $IsFirst, $IsLast 和 $IsEvenOdd 可用。
还有一个辅助函数可以将网格字段移动到另一个标签页
public function getCMSFields() { $fields = parent::getCMSFields(); // move the elements gridfield to a tab called 'PageElements'.. $fields = ElementsExtension::move_elements_manager($fields, 'Elements', 'Root.PageElements'); return $fields; }
嵌套元素关系
将相同的扩展应用到元素而不是页面。
TeasersElement: element_relations: Teasers: - TeaserElement
元素继承
如果您想将相同的元素应用到不同的 Pagetypes,可以使用 element_relations_inherit_from
定义在 yml 文件中引用的任意设置。例如,如果我们想让 HomePage 和 EventsPage 继承相同的元素,我们可以像这样定义 .yml
HomePage: element_relations_inherit_from: MainElements EventsPage: element_relations_inherit_from: MainElements
它们都引用在 yml 中定义的 MainElements,其中定义了元素关系,例如
MainElements: element_relations: Elements: - HeroElement - DownloadElement - TeasersElement
如果您继承了元素,您仍然可以创建您自己的自定义关系,也可以将新的 Element 类型添加到继承的关系中。
HomePage: element_relations_inherit_from: MainElements element_relations: Elements: - ImageElement
在此示例中,ImageElement 被添加到在 MainElements 中定义的可用的 Elements 列表中。
URLSegmentField
如果您想在 cms 中显示 URLSegment 字段,可以通过配置 show_urlsegment_field 进行选择
ElementBase: show_urlsegment_field: true
批量上传
支持使用 Colymba\BulkUpload\BulkUploader
对单个元素进行关系。例如,给定以下关系
ImagesElement: element_relations: Images: - ImageElement # an element with a has_one Image (Image) relation
您可以在 ImagesElement
中应用批量上传
use Arillo\Elements\BulkUploader; public function getCMSFields() { $fields = parent::getCMSFields(); if ($images = $fields->dataFieldByName('Images')) { BulkUploader::apply( $images, [ BulkUploader::ELEMENT_CLASSNAME => ImageElement::class, BulkUploader::ELEMENT_RELATIONNAME => 'Images', BulkUploader::FOLDER_NAME => 'FancyFolderName', // optional BulkUploader::FILE_RELATIONNAME => 'File', // optional, may be mandatory if you element has multiple has_one file relations ] ); } return $fields; }
翻译
通过 silverstripes i18n 对 Tab
和 GridField
标签进行命名,可以完成这项任务,有一个特殊的键名为 Element_Relations
,用于完成此任务,例如在 de.yml 中
de: Element_Relations: Downloads: "Dateien"
填充默认元素
在 Element GridField 下方有一个按钮,称为“创建默认元素”,它将填充在 _config.yml 中定义的默认元素作为页面的空元素。如果再次触发该操作,它将检查已创建的元素,并且不会添加任何重复项。
您可以为每个关系定义 element_defaults,例如
Page: element_relations: Teasers: - TeaserElement element_defaults: Teasers: - TeaserElement
Fluent 集成
要使用 Fluent 与元素一起使用,只需将 Fluent 扩展添加到 ElementBase
Arillo\Elements\ElementBase: extensions: - 'TractorCow\Fluent\Extension\FluentVersionedExtension' - 'TractorCow\Fluent\Extension\FluentFilteredExtension'
选项
当只有一个关联关系可用时,使用制表符代替内联字段。
Arillo\Elements\ElementsExtension: use_custom_tab: true
变更日志
2.2.5
- 移除了Fluent记录的自动删除功能。
2.1.9
– 添加了对SS 4.4 GridFieldDetailForm::setShowAdd的支持 - 移除了'onAfterDelete'钩子,如果需要自动删除,请添加
Arillo\Elements\ElementsExtension:
cascade_deletes:
- Elements
2.1.8
- 添加了对批量上传的支持。
2.1.0
-
移除了Fluent Locales的自动创建,请使用
Arillo\Utils\FluentFilteredHelper
代替。 -
重构GridField概览显示:添加了
getCMSTypeInfo
和getCMSSummary
函数。
2.0.0
- SilverStripe 4 兼容性
0.2.0
- 移除DefaultElementsExtension
- 在元素详情表单中添加发布页面按钮
0.1.0
- 从您的mysite/_config/elements.yml中移除扩展
ElementBase: extensions: - arillo\elements\ElementsExtension Page: extensions: - arillo\elements\ElementsExtension