webtorque7 / inpage-modules
为 SilverStripe 网站添加模块块。
Requires
- silverstripe/framework: ~3.1
This package is not auto-updated.
Last update: 2024-09-14 16:18:51 UTC
README
在 CMS 中定义内容的一种替代方法,可以是替换或补充 SilverStripe 的核心“页面类型”系统。允许作者将“内容模块”作为单独的项目插入到页面中,从而使得侧边栏风格的内容和灵活的主要内容区域的内容结构更加灵活。
功能
- 通过继承
ContentModule
来定义自己的内容模块 - 通过拖放排序模块
- 保存模块草稿,并独立于父页面发布
- 在单独的行政界面中列出所有使用的模块,并查看它们的历史记录
- 通过保存到库中在多个页面上重复使用内容模块
- 内置模块:文本、图像(包括裁剪)、相关页面
屏幕截图
安装
将模块安装到 webroot 内的 inpage-modules\
文件夹中。
使用 composer - composer require webtorque7/inpage-modules
然后将 ContentModule_PageExtension
类添加到您的基 Page
类或选择子类。
# File: mysite/_config/config.yml Page: extensions: - ContentModule_PageExtension
在您的模板中(例如 themes/<yourtheme>/templates/Layout/Page.ss
),您可以通过循环模块,并使用它们自己的模板来渲染它们
<% loop $SortedContentModules %> $forTemplate <% end_loop %>
模板
创建与模块同名的新模板,例如 ImageModule.ss。使用与 SiteTree 对象相同的模板继承模型来获取模板。按照惯例,将模块模板添加到 themes/<yourtheme>/templates/modules
是一个好主意
多个部分
可以通过创建一个新的基类(例如 SideBarModule)并设置多对多关系,在页面中为模块添加多个部分
$many_many = array( 'SideBarModules' => 'SideBarModule' ); $many_many_extraFields = array( 'SideBarModules' => array( 'Sort' => 'Int' ) );
请确保添加排序字段。为了简化获取排序模块,您可以覆盖多对多函数
public function SideBarModules() { return $this->getManyManyComponents('SideBarModules')->sort('Sort'); }
视觉编辑器
一个新功能是视觉编辑器。这增加了在查看页面时编辑模块的能力。编辑器带有预览,并可以点击模块进行编辑。如果已设置,这包括页眉和页脚模块。
需要手动添加对此功能的访问权限。一种简单的方法是在页面表单中添加一个按钮
$fields->addFieldsToTab('Root.Main', array( LiteralField::create( 'VisualEditorLink', sprintf( '<p><a href="%s" class="ss-ui-button .ss-ui-button-ajax visual-editor-button">Visual Editor</a></p>', Controller::join_links(singleton('VisualEditor')->Link('edit'), $this->ID) ) ) ));
要使用页眉和页脚模块,必须在配置中启用它们
ContentModule: enable_global_modules: 1
页眉模块应继承自 HeaderBaseModule,页脚模块应继承自 FooterBaseModule。默认模块可以在 CMS(设置)中的网站配置中设置。默认模块可以在页面设置选项卡的页面中逐页禁用。