lumisys / open-graph-protocol-tools
Open Graph 协议
Requires
- php: ^5.3 || ^7.0 || ^8.0
- ext-curl: *
This package is auto-updated.
Last update: 2024-08-29 05:50:42 UTC
README
Open Graph 协议 通过在 HTML 中的 <meta>
元素中包含键值对,增强与网页相关联的信息。此附加数据由社交分享网站消费,填充共享链接和社交图中的引用对象的故事预览。
此项目包含工具,在生成网页上的 Open Graph 协议标记之前验证和清理输入。此项目通过消费代理标准化输出,以便于索引。
消费代理
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>