restruct/silverstripe-oembeddable

OEmbed字段(从sheadawson/linkable提取而来)

安装: 2

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:silverstripe-vendormodule

0.1 2021-06-16 04:42 UTC

This package is auto-updated.

Last update: 2024-09-16 12:16:09 UTC


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'