自动Opengraph图像

Automatic Opengraph Image

在 Facebook 或其他社交网络上分享页面时:

  1. 如果存在<meta property="og:image" content="http://url.to/image.jpg" />,则用于生成缩略图。没关系。

  2. 如果<meta property="og:image">不存在但是页面上有图像,第一个图像出现在HTML页面上用作缩略图。这个也不错

  3. 如果 <meta property="og:image"> 不存在 并且 页面上没有图像,则没有缩略图。

如何使用 <meta property="og:image"> 提供 默认缩略图 图像,当且仅当 我们在案例 #3?

即: 如果页面上没有图像,将使用此默认图像(如果有,将使用此图像代替!)


更一般地说,有没有办法告诉:

"If there is no og:image, use the page rendering as thumbnail (like would do the well-known http://netrenderer.com/)"


我想实现什么:总是有一个缩略图,不管页面上有没有图片。

如果您希望始终显示您选择的缩略图,那么您需要为案例 #3 提供默认图像:

<meta property="og:image" content="http://YOUR_DOMAIN.COM/YOUR_DEFAULT_image.jpg" />

否则 Facebook 将自行决定添加或忽略图片

据我了解,如果页面上没有可供选择的图片,您希望提供后备 og:image 标签。

我看到两个通用解决方案

  • Post-检查 之后的页面 JavaScript 并附加后备 og:image-标签,如果没有图像 (可能不够靠谱)
  • 预检查 您在后端解析器(PHP-控制器)中的内容,并在必要时使用 og:image-标签发送响应

我建议在后端执行此操作。

假设您有一个单一文件 PHP-controller,您将逻辑、数据和视图混合在一起... 假设您将所有内容都存储在一个变量中,可能称为 $pagecontent.

如果此变量将所有即将到来的内容保存为字符串,您可以在 html-head 中执行类似以下操作:

<head>
  <!-- other code -->
  <?php 
    if (strpos($pagecontent, '<img ') === false) {
      echo '<meta property="og:image" content="http://url.to/fallback-image.jpg" />';
    }
  ?>
</head>

希望对您有所帮助。