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

时间:2012-02-20 23:40:38

标签: facebook jquery share

我有一个网站使用100%AJAX加载所有“页面”和“内容”。我正在使用jQuery来处理AJAX负载。

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

http://www.concrete.ca/#!/work_project.php?project_ID=32

因此,我们的想法是,当通过AJAX加载每个项目时,我将使用jQuery(当doc是.ready时)来更新驻留在index.php页面中的OG元标记。我已经为每个FB OG meta提供了一个与其目的相对应的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开发文档,但似乎没有任何内容可以解决这个问题。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Facebook的linter没有运行任何javascript。因此,当facebook来抓住它时,你必须确保提供正确的内容。

这是你需要做的。两种选择。无论是工作还是已经证明可以与其他生产网站合作。 Ĵ

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

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