Facebook分享:如何在使用AJAX加载页面时更新OG标签



我有一个使用100%AJAX加载所有"页面"one_answers"内容"的网站。我使用jQuery来处理AJAX负载。

我遇到的问题是,我想为各个项目页面包含一个FB共享链接(见下面的链接):

http://www.concrete.ca/#/work_project.php?项目ID=32

因此,我们的想法是,当每个项目都通过AJAX加载时,我将使用jQuery(当文档准备好时)来更新index.php页面中的OG元标记。我已经为每个FB OG元提供了一个与其目的相对应的ID(例如FB_title)。因此,以下是位于index.php:的HEAD中的OG元数据

<meta id="FB_title" property="og:title" content="Concrete Design Communications" /> 
<meta id="FB_description" property="og:description" content="Internationally acclaimed Toronto-based brand design practice serving a variety of sectors including telecom, luxury retail, fashion, cosmetics, hospitality, publishing, as well as furniture and product design." /> 
<meta id="FB_image" property="og:image" content="http://www.concrete.ca/images/LOGO.png" />

然后,当每个项目页面通过AJAX加载时,我想更新"内容"元标记的属性。沿着这些路线:

$('#FB_title').attr('content', 'Concrete Design: <? print $GA_project_name; ?>');

问题是,当我运行该代码时,我会得到一个"解析错误"。还有人遇到过这种情况吗?当通过AJAX加载页面时,更新FB OG元的最佳方式是什么?

我看过FB开发文档,但似乎没有任何内容可以解决这个问题。

提前感谢您的帮助。

Facebook的linter不运行任何javascript。因此,当脸书来抓取时,你必须确保提供正确的内容。

这是你需要做的。两种选择。两者都有效,并已被证明可以与其他制作网站合作。J

  • 在Like插件代码中指定AJAX url。当你的网络服务器看到来自Facebook的linter的请求时,请在它上设置一个特殊的处理程序。刮板的用户代理为:"facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"。然后,您的服务器可以解析hash bang,并为该内容提供特定的og元标签。这被称为URL重写,可以通过.htaccess.完成

  • 在Like插件代码中指定规范的URL。该规范URL对于可以显示的每一条内容都是唯一的,可能是对http://www.concrete.ca/work_project.php?project_ID=32的直接调用(没有hash bang),从而呈现出正确的og:meta标签。

最新更新