【问题标题】:Automatic Opengraph Image自动 Opengraph 图像
【发布时间】:2015-06-15 07:05:07
【问题描述】:

在 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 种情况?

即: 此默认图片在页面上没有图片时使用(如果有,则使用此图片代替!)


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

“如果没有og:image,则使用页面渲染作为缩略图(就像众所周知的http://netrenderer.com/一样)”


我想要实现什么:总是有一个缩略图,无论页面上是否有图像。

【问题讨论】:

  • 您在使用 CMS 吗?如果有,是哪一个?您是否可以访问后端?
  • @SebastianG.Marinescu 的重点是:不使用 CMS。 (使用 CMS,问题可能会通过插件解决)。但我可以使用一些 PHP。有什么想法吗?
  • 但是您使用的是动态数据 - 所以我们是在谈论许多可能的页面吗?如果是这样,您如何处理您的数据?一些静态的php文件?您是否使用某些特定的模板引擎或排序?
  • @SebastianG.Marinescu 是的,我有动态数据(基本上是使用 Parsedown 动态渲染到 HTML 的 Markdown 数据)...项目是 thisisvoid.org
  • 所以我们特别讨论这个索引:github.com/josephernest/void/blob/master/index.php?

标签: html facebook facebook-opengraph


【解决方案1】:

据我了解,如果页面上没有可供选择的图像,您希望提供一个备用 og:image-tag。

我看到两种通用解决方案

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

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

假设您有一个单文件 PHP 控制器,您可以在其中混合逻辑、数据和视图... 假设您将所有内容存储在一个变量中,可能称为 $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>

我希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 是的@buzz,但我希望http://YOUR_DOMAIN.COM/YOUR_DEFAULT_image.jpg 成为备用图像,以防万一没有其他图像...但我希望 如果页面上存在图像,不使用默认的后备图片……怎么办?
    • 来自@sebastian-g-marinescu 的@Basj 使用PHP 的strpos 函数回答应该可以解决您的问题。提示:如果您只想检查一个字符串是否包含在另一个字符串中,请不要使用 preg_match()。请改用 strpos() 或 strstr(),因为它们会更快。如此处所述php.net/manual/en/function.preg-match.php
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 2021-12-31
    • 2017-12-31
    相关资源
    最近更新 更多