jaedb / modulemanager
SilverStripe的模块管理器
3.0.2
2018-09-20 03:55 UTC
Requires
README
管理网站范围内的模块(即小部件)并选择它们要出现的页面。这允许您在整个网站上重新利用内容,并轻松构建模块化内容元素。
依赖项
- SilverStripe 4
安装
composer require jaedb/ModuleManager
- 运行 /dev/build?flush=1
- 设置模块位置。已为您设置了一个初始的
after_content
区域以供开始。 - 将模块位置插入到您的模板中(例如
$ModuleArea(after_content)
)
用法
创建模块区域
- 编辑您的
app/_config/config.yml
文件以添加任何额外的模块区域。使用以下格式
Jaedb\ModuleManager\ModuleManager:
positions:
{ALIAS}: "{NAME}"
- 在您的模板中,使用代码
$ModulePosition(ALIAS)
其中 ALIAS 是您的位置别名字符串。 - 运行 dev/build (
/dev/build?flush=all
)
创建模块实例
- 在 模块管理器 管理员中,创建一个新的
Module
对象。下拉列表将显示可用的模块类型列表。 - 将您的新的
Module
对象分配给您在config.yml
中配置的其中一个位置。
创建自定义模块类型
- 创建一个新的 DataObject 文件
app/src/Modules/MyModule.php
<?php
class MyModule extends Module {
// set module names
private static $singular_name = 'My Module';
private static $plural_name = 'My Modules';
private static $description = 'This is my great custom module';
// your custom fields
static $db = array(
'MyField' => 'Varchar(255)'
);
// create cms fields
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Main', TextField::create('MyField', 'My field'));
return $fields;
}
}
- 创建您的模板文件
app/templates/Modules/MyModule.ss
<div class="module module_my-module">
<h3>$Title</h3>
<div class="module-content">
$MyField
</div>
</div>
- 执行构建和刷新 (
/dev/build?flush=all
) - 现在您可以创建自定义模块类型
模块继承
为了避免在某个部分内的每个页面上设置模块,您可以设置页面以继承其父页面的模块。
- 打开您的页面,并转到 模块 选项卡
- 勾选 继承模块 并保存您的页面。
- 如果需要,您可以将此继承应用于页面层次结构的更高层。