slonline / silverstripe-calltoaction
Silverstripe 4 模块,通过 HTML 编辑器添加呼叫我行动块
v0.1.5
2021-04-15 13:44 UTC
Requires
- php: ^7.1 || ^8
- silverstripe/admin: ^1.0
- silverstripe/framework: ^4.0
- silverstripe/vendor-plugin: ^1.0
- silverstripe/versioned: ^1@dev
Requires (Dev)
- sminnee/phpunit: ^5.7
README
为 CMS 用户提供了一个图形界面,用于在 HTMLEditorField 中插入呼叫我行动块或任何短代码,并为开发人员提供了一个 API,以定义可短代码的数据对象和视图。这使得 CMS 用户可以轻松地将数据对象和模板化的 HTML 片段嵌入到页面内容中的任何位置。短代码以所见即所得的形式表示,具有自定义的 HTML 内容。
需求
- SilverStripe 4+
安装
通过 composer 安装,运行 dev/build
composer require slonline/silverstripe-calltoaction
配置
要添加自己的呼叫我行动类,只需定义一个可以从 DataObject 或 ViewableData 派生的新的类。一个类可以实现 ShortcodeableInterface 接口。接口定义了所需的方法。
class MyCallToAction extends ViewableData implements ShortcodeableInterface { private static $singular_name = 'My Call To Action'; private static $shortcode = 'mycta'; public static function parse_shortcode($attributes, $content, $parser, $shortcode): string { return self::create()->renderWith(self::class); } public function getCallToActionPlaceHolder($attributes): string { return self::create()->renderWith(self::class); } public function singular_name() { $name = $this->config()->get('singular_name'); if ($name) { return $name; } return ucwords(trim(strtolower(preg_replace( '/_?([A-Z])/', ' $1', ClassInfo::shortName($this) )))); } /** * Custom fields for Call To Action form * * @return FieldList */ public function getShortcodeFields() { $fields = FieldList::create(); ... return $fields; } }
HTML 将通过模板渲染。
在应用程序配置中添加定义的类。
Name: CallToActions --- SLONline\CallToActions\CallToAction: calltoaction_classes: - MyCallToAction
TinyMCE 块元素
在 SilverStripe 中,短代码通常会包裹在段落元素中,如果你的短代码将被渲染为块元素,这可能会成为一个问题。为了解决这个问题,你可以通过配置设置将可短代码的类标记为块元素。如果您不想用 div 替换段落标签,也可以禁用此功能。
MyCallToAction: shortcodable_is_block: true disable_wrapper: true
屏幕截图
CMS 使用
安装后,CMS HTMLEditor 工具栏中会显示一个新的按钮 [CtA]。
点击工具栏将打开一个弹出窗口,允许您将呼叫我行动块或短代码插入到编辑器中。
在点击短代码图标之前在编辑器中突出显示现有的短代码标签将打开弹出窗口,允许编辑选定的短代码标签。