jaedb/modulemanager

SilverStripe的模块管理器

安装次数: 2,385

依赖: 0

建议者: 0

安全性: 0

星级: 1

关注者: 3

分支: 2

开放问题: 5

类型:silverstripe-module

3.0.2 2018-09-20 03:55 UTC

This package is auto-updated.

Last update: 2024-09-04 18:50:53 UTC


README

管理网站范围内的模块(即小部件)并选择它们要出现的页面。这允许您在整个网站上重新利用内容,并轻松构建模块化内容元素。

依赖项

  • SilverStripe 4

安装

  1. composer require jaedb/ModuleManager
  2. 运行 /dev/build?flush=1
  3. 设置模块位置。已为您设置了一个初始的 after_content 区域以供开始。
  4. 将模块位置插入到您的模板中(例如 $ModuleArea(after_content)

用法

创建模块区域

  1. 编辑您的 app/_config/config.yml 文件以添加任何额外的模块区域。使用以下格式
Jaedb\ModuleManager\ModuleManager:
  positions:
    {ALIAS}: "{NAME}"
  1. 在您的模板中,使用代码 $ModulePosition(ALIAS) 其中 ALIAS 是您的位置别名字符串。
  2. 运行 dev/build (/dev/build?flush=all)

创建模块实例

  1. 模块管理器 管理员中,创建一个新的 Module 对象。下拉列表将显示可用的模块类型列表。
  2. 将您的新的 Module 对象分配给您在 config.yml 中配置的其中一个位置。

创建自定义模块类型

  1. 创建一个新的 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;
  }	
}
  1. 创建您的模板文件 app/templates/Modules/MyModule.ss
  <div class="module module_my-module">
  	<h3>$Title</h3>
  	<div class="module-content">
          $MyField
  	</div>
  </div>
  1. 执行构建和刷新 (/dev/build?flush=all)
  2. 现在您可以创建自定义模块类型

模块继承

为了避免在某个部分内的每个页面上设置模块,您可以设置页面以继承其父页面的模块。

  1. 打开您的页面,并转到 模块 选项卡
  2. 勾选 继承模块 并保存您的页面。
  3. 如果需要,您可以将此继承应用于页面层次结构的更高层。