【问题标题】:Multiple open graph tags, which one is prioritized?多个开放图标签,哪个优先?
【发布时间】:2014-09-07 21:00:59
【问题描述】:

我见过各种关于 FB 开放图形图像标签的 SO 线程,例如:Facebook multiple og:image tags - Which is Default?

这些主题已有 2.5 年的历史,所以我想知道规则是否已更新。此外,接受显示的最高分辨率图像的答案似乎并不完美。如果图像不一样怎么办?例如,如何在首页使用一张图片,然后在 AJAX 加载的页面上使用另一张图片?

由于 FB、Reddit 和许多高流量网站都使用这些规则,显然这些信息非常有价值。谢谢!

【问题讨论】:

  • ogp.me——Facebook 在他们的文档 IIRC 中引用了它自己——说,“如果一个标签可以有多个值,只需在你的页面上放置同一个 标签的多个版本.第一个标签(从上到下)在冲突期间被优先考虑。” ...不确定尽管 FB 尊重图像时,他们可能宁愿选择他们认为在新闻源/时间线中显示最佳的尺寸或纵横比.
  • “例如,如何在主页上有一个图像,然后在 AJAX 加载的页面上显示一个不同的图像?” - 这是完全不同的事情。 Open Graph 对象由它们的 URL 标识 - 如果您想共享通过 AJAX 加载的内容,请确保内容具有其自己的唯一 URL,Facebook 的抓取工具可以从中请求 OG 元数据。

标签: html facebook metadata facebook-opengraph reddit


【解决方案1】:

由于reddit是开源的,你可以看看它的行为是什么。

你想看的地方是_find_thumbnail_image()。现在,这是与 Open Graph 相关的代码:

    # Allow the content author to specify the thumbnail using the Open
    # Graph protocol: http://ogp.me/
    og_image = (soup.find('meta', property='og:image') or
                soup.find('meta', attrs={'name': 'og:image'}))
    if og_image and og_image['content']:
        return og_image['content'], None
    og_image = (soup.find('meta', property='og:image:url') or
                soup.find('meta', attrs={'name': 'og:image:url'}))
    if og_image and og_image['content']:
        return og_image['content'], None

所以,它会使用Beautiful Soup's find() method returns,它应该是第一个匹配的标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 2018-06-15
    • 1970-01-01
    • 2017-08-05
    相关资源
    最近更新 更多