syntro / silverstripe-elemental-baseitem
用于处理具有子元素的 elemental 块的基本项目权限
1.2.1
2024-04-19 14:43 UTC
Requires
- dnadesign/silverstripe-elemental: ^4 || ^5
- silverstripe/admin: ^1.0 || ^2.0
- silverstripe/framework: ^4 || ^5
- symbiote/silverstripe-gridfieldextensions: ^3 || ^4
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-19 15:39:46 UTC
README
此模块添加了一个空白的基本项目,您可以使用它向元素添加子项目,并添加一个模拟这些项目父 ElementalArea 感觉的网格字段配置,允许编辑器像处理元素一样处理这些“块”。
当目标是创建一个充当某些内容“块”容器元素时,此模块最好使用。例如,这些块可能是卡片、画廊中的图片或旋转木马中的幻灯片。
需求
- SilverStripe ^4
- Silverstripe elemental ^4
安装
composer require syntro/silverstripe-elemental-baseitem
许可证
请参阅 许可证
文档
首先,简单地扩展基本项目
use Syntro\SilverStripeElementalBaseitem\Model\BaseItem; class Teaser extends BaseItem { private static $displays_title_in_template = true; private static $db = [ // Whatever you need for the item to render ]; private static $has_one = [ 'Section' => TeaserCardsBlock::class, ]; }
默认情况下,baseItem 有一个 Title
和一个 ShowTitle
字段,类似于 elemental 中的 BaseElement。它们还将使用来自 silverstripe-elemental 模块的标题复合字段。此行为可以通过在 yaml 配置中将 displays_title_in_template
设置为 false 或直接在类中禁用。
然后,添加到所需元素的关系并配置网格字段
use DNADesign\Elemental\Models\BaseElement; use Syntro\SilverStripeElementalBaseitem\Forms\GridFieldConfig_ElementalChildren; class TeaserCardsBlock extends BaseElement { private static $has_many = [ 'Teasers' => Teaser::class ]; /** * @return FieldList */ public function getCMSFields() { $this->beforeUpdateCMSFields(function ($fields) { if ($this->ID) { /** @var GridField $griditems */ $griditems = $fields->fieldByName('Root.Teasers.Teasers'); $griditems->setConfig(GridFieldConfig_ElementalChildren::create()); } }); return parent::getCMSFields(); } }
维护者
- Matthias Leutenegger hello@syntro.ch
错误跟踪器
错误在此存储库的问题部分跟踪。在提交问题之前,请阅读现有问题以确保您的独特性。
如果问题看起来像是新的错误
- 创建新问题
- 描述重现您的问题所需的步骤和预期结果。单元测试、截图和屏幕录像在这里可能会有所帮助。
- 尽可能详细地描述您的环境:SilverStripe 版本、浏览器、PHP 版本、操作系统、任何已安装的 SilverStripe 模块。
请直接向模块维护者报告安全问题。请勿在错误跟踪器中提交安全问题。
开发和贡献
如果您想为此模块做出贡献,请确保您提出一个拉取请求,并与模块维护者进行讨论。