wrav/oembed

一个简单的插件,可以从网站上提取媒体信息,例如YouTube视频、Twitter状态或博客文章。

安装次数: 178,292

依赖关系: 3

建议者: 0

安全性: 0

星标: 37

关注者: 3

分支: 36

开放问题: 9

类型:craft-plugin


README

oEmbed

一个简单的插件,可以从网站上提取媒体信息,例如YouTube视频、Twitter状态或博客文章。

需求

此插件需要Craft CMS 3.0.0-beta.23或更高版本。

如果您需要CraftCMS 2.5的支持,请使用之前的版本1.0.4,这是CraftCMS 2.5的最新版本。

版本

关于URL问题的快速提示

许多网站,如Vimeo,正在限制对标准URL(例如 www.vimeo.com)的访问,有时需要使用嵌入URL(例如,player.vimeo.com)来检索oEmbed数据。

您通常可以通过视频和oEmbed支持的网站的“分享”选项找到嵌入URL。虽然插件提供了一般丰富的内容作为后备,但它的真正潜力来自于利用oEmbed协议和内容提供商的相关元数据。

如果您遇到问题,请检查提供者或页面是否提供嵌入版本,并使用该URL以确保您访问的是最准确的数据。

安装

要安装插件,请按照以下说明操作。

  1. 打开您的终端并转到您的Craft项目

     cd /path/to/project
    
  2. 然后告诉Composer加载插件

     composer require wrav/oembed
    
  3. 在控制面板中,转到设置 → 插件,并为oEmbed点击“安装”按钮。

使用oEmbed

要使用,只需在您的字段类型上调用以下方法之一

{{ entry.field.valid }} # Get the embed object
{{ entry.field.render }} # Renders HTML
{{ entry.field.embed }} # Get the embed object
{{ entry.field.media }} # Get the embed object

我们还提供将oEmbed作为Twig变量的选项

{{ craft.oembed.valid(url, options, cacheFields) }}
{{ craft.oembed.render(url, options, cacheFields) }}
{% set embed = craft.oembed.embed(url, options, cacheFields) %}
{% set media = craft.oembed.media(url, options, cacheFields) %}

更新嵌入URL,例如自动播放、rel、mute参数。这允许您支持提供者可能尚未支持的功能

{{ 
    entry.oembed_field.render({
        params: {
            autoplay: 1,
            rel: 0,
            mute: 0,
            loop: 1,
            autopause: 1,
        },
        attributes: {
            title: 'Main title',
            'data-title': 'Some other title',
        }
    }) 
}}

我们仍然支持旧的遗留方法,但这种方法可能在未来的版本中弃用。

{{ 
    entry.oembed_field.render({
         autoplay: 1,
         rel: 0,
         mute: 0,
         loop: 1,
         autopause: 1,
    }) 
}}

通过以下方法可以在iframe上更新宽度和高度属性,但是CSS仍然建议用于调整iframe的大小。

{{ 
    entry.oembed_field.render({
        width: 640,
        height: 480,
    }) 
}}

{{ 
    entry.oembed_field.render({
        attributes: {
            width: 640,
            height: 480,
        }
    }) 
}}

您可以使用以下示例访问额外的媒体信息,这些是默认键。

entry.field.media.title
entry.field.media.description
entry.field.media.url
entry.field.media.type
entry.field.media.tags
entry.field.media.images
entry.field.media.image
entry.field.media.imageWidth
entry.field.media.imageHeight
entry.field.media.code
entry.field.media.width
entry.field.media.height
entry.field.media.aspectRatio
entry.field.media.authorName
entry.field.media.authorUrl
entry.field.media.providerName
entry.field.media.providerUrl
entry.field.media.providerIcons
entry.field.media.providerIcon
entry.field.media.publishedDate
entry.field.media.license
entry.field.media.linkedData
entry.field.media.feeds

您可以从数据数组中访问额外的媒体信息。这些将是snake_case,请注意。

{{ dump(entry.field.media.data) }}

更多嵌入信息可以在这里找到

缓存

默认情况下,插件将在oembed对象上缓存以下键。插件可以使用缓存prop参数缓存额外的缺失字段,该参数将接受一个字符串数组。

{{ entry.oembed_field.render( { width: 640, height: 480, }, [ 'cacheable_key' ] ) }}

默认键

  • title
  • description
  • url
  • type
  • tags
  • images
  • image
  • imageWidth
  • imageHeight
  • code
  • width
  • height
  • aspectRatio
  • authorName
  • authorUrl
  • providerName
  • providerUrl
  • providerIcons
  • providerIcon
  • publishedDate
  • license
  • linkedData
  • feeds

GraphQL

我建议在插件设置菜单中启用缓存以加快API解析时间。

以下是一个名为“foobar”的Oembed字段的示例,以及如何从嵌入对象中访问属性。

{
  entries {
    id,
    ... on page_page_Entry {
      foobar {
        code,
        providerUrl,
        aspectRatio
      }
    }
  }
}

致谢

最初在HutSix工作时构建,我后来获得了在这里继续开发的许可。

变更日志

更改可以在这里查看

支持

通过电子邮件、Discord或通过创建一个Github问题联系