restruct / silverstripe-oembeddable
OEmbed字段(从sheadawson/linkable提取而来)
0.1
2021-06-16 04:42 UTC
Requires
- silverstripe/framework: ^4.0
- silverstripe/vendor-plugin: ^1.0
README
此模块包含一个可嵌入的数据对象和一个可嵌入的字段,可轻松将oEmbed内容添加到数据对象或页面中。这些是从linkable提取、重命名和改进而来的,因此它们可以单独使用。(我们使用NamedLinkField模块而不是Linkable)。
示例用法
将$has_one
添加到OEmbeddable
中,并插入OEmbeddableField
来管理其内容。
use Restruct\Silverstripe\OEmbedable\OEmbeddable; use Restruct\Silverstripe\OEmbedable\OEmbeddableField; class Page extends SiteTree { private static $has_one = [ 'EmbedVideo' => OEmbeddable::class, ]; public function getCMSFields() { $fields = parent::getCMSFields(); $fields->addFieldToTab( 'Root.Main', OEmbeddableField::create( 'EmbedVideo', 'Video from oEmbed URL', $this->EmbedVideo() ) ); return $fields; } }
在模板中,您可以使用has_one关系的名称渲染对象
$EmbedVideo
您还可以通过以下方式访问对象的其它元数据
<h1>$EmbedVideo.Title</h1> $EmbedVideo.Description $EmbedVideo.ThumbURL
从Linkable切换到OEmbeddable
可能您可以使用升级工具,新的类名已包含在.upgrade.yml中,但我还没有测试。
要手动升级,只需删除Linkable模块
将Linkable模块与OEmbeddable模块一起保留
注意:如果您实际上正在使用Linkable字段,您可以选择继续使用该模块,或者更改OEmbeddable
的$table_name
(或Linkable的EmbeddedObject
)。然后这两个模块应该可以和平共存。(在Linkable的SS4更新版本中,我们无论如何都需要纠正$table_name
的值)。
您可以通过Yaml配置在SS3->4升级后更正$db_field的值
Sheadawson\Linkable\Models\EmbeddedObject: table_name: 'EmbeddedObject'
您可以通过更新/更改其值(或OEmbeddable的值)使两个模块可以一起工作
Sheadawson\Linkable\Models\EmbeddedObject: table_name: 'LinkableEmbeddedObject' # this way OEmbeddable can use EmbeddedObject as table_name
或者更改OEmbeddable以使用不同的table_name(请记住也要更正Linkable的)
Restruct\Silverstripe\OEmbedable\OEmbeddable: table_name: 'OEmbeddable'