lumisys/open-graph-protocol-tools

此包最新版本(v2.0.0)没有可用的许可信息。

Open Graph 协议

v2.0.0 2022-03-29 23:07 UTC

This package is auto-updated.

Last update: 2024-08-29 05:50:42 UTC


README

Open Graph protocol

Open Graph 协议 通过在 HTML 中的 <meta> 元素中包含键值对,增强与网页相关联的信息。此附加数据由社交分享网站消费,填充共享链接和社交图中的引用对象的故事预览。

此项目包含工具,在生成网页上的 Open Graph 协议标记之前验证和清理输入。此项目通过消费代理标准化输出,以便于索引。

消费代理

Facebook

Facebook 指数 Open Graph 协议标记 在成员的社会新闻源中共享的页面上找到。此标记还增强了由 Like 按钮社交插件Facebook Share 生成的社交新闻源故事。

Open Graph 协议标记将网页转换为 Facebook 社交图中的对象,增加搜索曝光率,并在社交新闻源中唯一分类您的网站和故事类型。

Facebook 对象调试器 显示 Facebook 对您网站 Open Graph 协议内容的解释。

mixi Check

Mixi 在其 mixi Check 社交分享服务中索引 Open Graph 协议标记。

Google+ Snippet

Google 索引 Open Graph 协议标记 以填充 Google+ 活动帖子。

示例代码

核心 Open Graph 协议

支持图像、视频和音频对象的结构化属性。

<?php
$image = new OpenGraphProtocolImage();
$image->setURL( 'http://example.com/image.jpg' );
$image->setSecureURL( 'https://example.com/image.jpg' );
$image->setType( 'image/jpeg' );
$image->setWidth( 400 );
$image->setHeight( 300 );

$video = new OpenGraphProtocolVideo();
$video->setURL( 'http://example.com/video.swf' );
$video->setSecureURL( 'https://example.com/video.swf' );
$video->setType( OpenGraphProtocolVideo::extension_to_media_type( pathinfo( parse_url( $video->getURL(), PHP_URL_PATH ), PATHINFO_EXTENSION ) ) );
$video->setWidth( 500 );
$video->setHeight( 400 );

$audio = new OpenGraphProtocolAudio();
$audio->setURL( 'http://example.com/audio.mp3' );
$audio->setSecureURL( 'https://example.com/audio.mp3' );
$audio->setType('audio/mpeg');
?>

声明一个新的 OpenGraphProtocol 对象并设置一些属性。添加结构化媒体对象。

<?php
$ogp = new OpenGraphProtocol();
$ogp->setLocale( 'en_US' );
$ogp->setSiteName( 'Happy place' );
$ogp->setTitle( 'Hello world' );
$ogp->setDescription( 'We make the world happy.' );
$ogp->setType( 'website' );
$ogp->setURL( 'http://example.com/' );
$ogp->setDeterminer( 'the' );
$ogp->addImage($image);
$ogp->addAudio($audio);
$ogp->addVideo($video);
?>

将 OpenGraphProtocol 对象输出为 HTML <meta> 元素。默认配置使用 RDFa 的 property 属性。如果您更喜欢 HTML 规范合规性且消费代理支持 name 属性作为 property 的回退,请将其更改为 name

<?php
$ogp->toHTML();
?>

全局对象

构建全局对象和属性。使用 ISO 8601 格式的字符串或 DateTime 对象设置时间值。日期时间将在输出之前转换为 UTC 时区,以保持一致性。

<?php
$article = new OpenGraphProtocolArticle();
$article->setPublishedTime( '2011-11-03T01:23:45Z' );
$article->setModifiedTime( new DateTime( 'now', new DateTimeZone( 'America/Los_Angeles' ) ) );
$article->setExpirationTime( '2011-12-31T23:59:59+00:00' );
$article->setSection( 'Front page' );
$article->addTag( 'weather' );
$article->addTag( 'football' );
$article->addAuthor( 'http://example.com/author.html' );
?>

将全局对象转换为 <meta> 元素,就像对 OpenGraphProtocol 做的那样。

<?php
$article->toHTML();
?>

组合

一个常见的用例可能是将 Open Graph 协议对象存储在控制器中,以便在您的 Web 应用程序中使用。您可以将每个对象添加到数组中,然后稍后遍历该数组进行 <head prefix=""><meta> 输出。

<?php
$ogp_objects = array( $ogp, $article );
$prefix = '';
$meta = '';
foreach ( $ogp_objects as $ogp_object ) {
    $prefix .= $ogp_object::PREFIX . ': ' . $ogp_object::NS . ' ';
    $meta .= $ogp_object->toHTML() . PHP_EOL;
}
?>
<head prefix="<?php echo rtrim( $prefix,' ' ); ?>">
<?php echo rtrim( $meta, PHP_EOL ); ?>
</head>