chriskonnertz/open-graph

辅助构建Open Graph元标签的类

v2.0.0 2019-06-19 09:00 UTC

This package is not auto-updated.

Last update: 2024-09-19 00:24:37 UTC


README

Build Status Monthly Downloads Version GitHub license

辅助构建Open Graph元标签的库。

安装

使用文本编辑器将chriskonnertz/open-graph添加到composer.json

"chriskonnertz/open-graph": "~2"

或者通过控制台

composer require chriskonnertz/open-graph

未来使用composer update更新到Open Graph Builder的最新版本。

此库需要PHP >=7.0。

框架支持

Laravel >=5.5可以自动检测此包,因此您可以忽略此部分。在Laravel 5.0-5.4中,您必须编辑您的config/app.php配置文件。您可以添加一个对象别名,以便通过new OpenGraph()创建新实例...

'aliases' => [
    ...
    'OpenGraph' => 'ChrisKonnertz\OpenGraph\OpenGraph',
],

...或者添加一个外观别名(这是Laravel >=5.5通过包自动发现所发生的情况),这样您就不需要自己创建实例,但可以通过伪静态方法访问它。如果您选择此路径,还必须在配置文件中添加服务提供者

'aliases' => [
    ...
    'OpenGraph' => 'ChrisKonnertz\OpenGraph\OpenGraphFacade',
],

...

'providers' => [
    ...
    'ChrisKonnertz\OpenGraph\OpenGraphServiceProvider',
],

如果需要重置外观的底层实例(OpenGraph对象),请调用OpenGraph::clear()

简介

示例

$og = OpenGraph::title('Apple Cookie')
    ->type('article')
    ->image('http://example.org/apple.jpg')
    ->description('Welcome to the best apple cookie recipe never created.')
    ->url();

如下在模板中渲染这些标签

{!! $og->renderTags() !!}

提供Open Graph标签可以丰富网页。缺点是额外花费一些时间,因为每个模型都有自己的方式来生成这些标签。遵循官方协议也很重要。阅读文档了解有关可用的标签及其支持值的更多信息,或查看示例。请注意,此实现遵循OGP.me的规范,不支持Facebook创建的增强功能。

添加标签和属性

添加基本标签

$og->title('Apple Cookie')
    ->type('article')
    ->description('A delicious recipe')
    ->url()
    ->locale('en_US')
    ->localeAlternate(['en_UK'])
    ->siteName('Cookie Recipes Website')
    ->determiner('an');

如果未向url方法传递任何参数,则应用当前URL。请注意,如果设置了环境变量APP_URL,则考虑该变量。此外,当通过CLI执行时,如果没有设置APP_URL,则域名将为localhost

请注意,DateTime对象将被转换为ISO 8601字符串。

添加带有属性的标签

您可以添加imageaudiovideo标签,并传递基本值(对象的URL)和额外的属性数组。

$og->image($imageUrl, [
    'width'     => 300,
    'height'    => 200
]);

$og->audio($audioUrl, [
    'type'     => 'audio/mpeg'
]);

$og->video($videoUrl, [
    'width'     => 300,
    'height'    => 200,
    'type'      => 'application/x-shockwave-flash'
]);

添加类型属性

一些对象类型(由type标签确定)有自己的带有属性的标签,但没有基本标签。这些是articlebookprofile

$og->article([
    'author'        => 'Jane Doe'
]);

$og->book([
    'author'        => 'John Doe'
]);

$og->profile([
    'first_name'    => 'Kim',
    'last_name'     => 'Doe'
]);

添加属性

Facebook支持不仅仅是基本对象类型。要为非记录对象类型添加属性,您可以使用attributes方法。

无自定义验证规则

$og->attributes('product', ['product:color' => 'red']);

带有自定义验证规则

$og->attributes('product', ['product:color' => 'red'], ['product:color']);

此方法执行的唯一验证是检查所有属性名称是否与属性名称列表匹配。

添加标签多次

属性可以有多个值。多次添加标签以实现此效果。

$og->image('http://example.org/apple.jpg')
    ->image('http://example.org/tree.jpg');

添加基本标签第二次将覆盖第一个标签的值。基本标签不应存在多次。

验证

如果启用验证(默认禁用)添加标签将触发验证。验证并不涵盖完整的规范,但涵盖一些重要部分。如果验证失败,则方法将抛出异常。

验证检查标签值是否合法以及属性类型是否已知。

通过方法启用验证

$og->validate();

通过构造函数

$og = new OpenGraph(true);

禁用验证

$og->validate(false);

杂项

确定是否存在一个标签

$hasTitle = $og->has('title');

从列表中移除一个标签

$og->forget('title');

从列表中移除所有标签

$og->clear();

添加一个自定义标签

$og->tag('apples', 7);

要禁用自动前缀,请传递第三个参数:$og->tag('apples', 7, false)

获取最后一个标签(按名称)

$tag = $og->lastTag('image');
$value = $tag['value'];

标签以包含键值对的数组形式存储。

状态

此存储库的状态:维护中。如果您创建一个问题,您通常会在48小时内收到回复。