大佬教程收集整理的这篇文章主要介绍了动态生成Facebook Open Graph元标记,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,我想重申一下,我几乎肯定您的问题是由于您传递给调试器的URL不是动态生成的事实。url标记本质上充当重定向器。除非它与测试的URL完全相同(意味着url元对象上的Meta标签与传递的url上的Meta标签完全相同),否则您将无法获得所需的结果。
元标记
<Meta property="og:url">
需要动态生成。调试器将重定向到您的默认索引页,而不是动态生成的页。
例如,我为正在使用的每个对象分配一个ID,因此我有类似以下内容
<Meta property="og:url" content="http://example.com/index.php?ID=<?php echo $_GET['ID'] ?>"/>
我将那个确切的URL传递给调试器,因此调试器到达的最后一页将是那个确切的URL。
另外,在下面
<Meta property="og:type" content=""/>
如何动态生成属性?您还记得在实际代码中设置如下内容吗?
<Meta property="og:type" content="<?php echo $_GET['type'] ?>"/>
您似乎也将所有内容都推到了url中,这很危险,并且可能引起巨大的麻烦,这可能是这里的问题。相反,只推一件事情,例如?type = bistro,然后从数据库传播必需的数据。
我建议根据object_id动态生成大多数OG标签。存储每个object_id的相关OG信息,然后在访问它们时传播它们。这样,您还可以轻松扩展和编辑更新OG时使用的标签。
如果您在使用OG时遇到问题,则应毫不犹豫地将其作为新问题而不是发表评论,因为我保证其他人也有同样的问题。
就像标题所暗示的那样,我正在尝试动态生成Facebook Open Graph元标记,但无法使其正常工作。可能吗
最终,我在@saccharine的帮助下使其工作。以下代码为我工作:
<?php
$params = array();
if(count($_GET) > 0) {
$params = $_GET;
} else {
$params = $_POST;
}
// defaults
if($params['type'] == "") $params['type'] = "restaurant";
if($params['locale'] == "") $params['locale'] = "en_US";
if($params['title'] == "") $params['title'] = "default title";
if($params['image'] == "") $params['image'] = "thumb";
if($params['description'] == "") $params['description'] = "default description";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# MY_APP_NAME_SPACE: http://ogp.me/ns/fb/MY_APP_NAME_SPACE#">
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<!-- Open Graph meta tags -->
<meta property="fb:app_id" content="MY_APP_ID" />
<meta property="og:site_name" content="meta site name"/>
<meta property="og:url" content="http://mysite.com/index.php?type=<?php echo $params['type']; ?>&locale=<?php echo $params['locale']; ?>&title=<?php echo $params['title']; ?>&image=<?php echo $params['image']; ?>&description=<?php echo $params['description']; ?>"/>
<meta property="og:type" content="MY_APP_NAME_SPACE:<?php echo $params['type']; ?>"/>
<meta property="og:locale" content="<?php echo $params['locale']; ?>"/>
<meta property="og@R_165_6964@" content="<?php echo $params['title']; ?>"/>
<meta property="og:image" content="http://mysite.com/img/<?php echo $params['image']; ?>.png"/>
<meta property="og:description" content="<?php echo $params['description']; ?>"/>
</head>
</html>
我现在放入Facebook调试器中的url可以包含任何动态参数,甚至可以不包含任何动态参数,甚至可以包括所有选择,也可以仅包含选择,并且可以按如下顺序进行:
http :
//mysite.com/index.php?type=restaurant&title=
luigis
或以下网址:http
:
//mysite.com/index.php?locale=de_DE&description=hi&type=bistro
完成任务:现在可以将操作发布到用户流:
function postRestaurant() {
FB.api('me/MY_APP_NAMESPACE:have_lunch?\
start_time=2000-12-12T04:00:00&\
expires_in=7200&\
restaurant=' + encodeURIComponent(getRedirectURI() + '?type=restaurant' + '&description=arnold' + '&title=stalone'),'post',function (responsE) {
if (!response || response.error) {
console.log('postRestaurant: Error occured => ' + response.error.messagE);
} else {
console.log('postRestaurant: Post was successful! Action ID: ' + response.id);
}
});
}
奇迹般有效!:]
以上是大佬教程为你收集整理的动态生成Facebook Open Graph元标记全部内容,希望文章能够帮你解决动态生成Facebook Open Graph元标记所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。