我可以动态附加og标记并进行渲染吗?

mar*_*zzz 0 html javascript php facebook

我正在尝试建立一个链接到我的网站和Facebook,并在其上放置一些元数据!我的目标是管理这些数据:

<meta property="og:title" content="MY_PAGE_TITLE" /> 
<meta property="og:description" content="MY_DESCRIPTION_TEXT" /> 
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的Web应用程序(在PHP上)结构不合理,我还没有定义正确的MVC!这是非常程序化的,因此在渲染主html标题部分之后,我应该从数据库中提取我应该放在这些元标记上的信息.

所以,我试过的是:

<script type="text/javascript">
    $('head').append("<meta property=\"og:title\" content=\"MY_PAGE_TITLE\" />");
    $('head').append("<meta property=\"og:description\" content=\"MY_DESCRIPTION_TEXT\" />");
</script>

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/it_IT/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like href="<?=$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]?>" send="false" layout="button_count" width="130" show_faces="false"></fb:like>
Run Code Online (Sandbox Code Playgroud)

但事实上,它不起作用!我的意思是,在头上添加元标记,然后尝试渲染它.

你知道一些策略吗?我会避免将它们直接插入头部的选项,因为正如我所说,我想要插入的文本是在头部之后(由于网站的组织错误).

我相信另一个解决方案,希望你知道一个!

Mat*_*lin 5

悲伤但没有其他办法比改变你的结构.og:标签即使使用你的javascript也没有处理的原因是facebook不呈现javascript.它只是询问页面并从顶部读取OG标签,就像静态HTML一样.

您唯一的选择是在输出之前更改结构并加载内容.你不需要改为MVC,在你的内容加载你的内容之前,你可以节省大量的工作并且仍在工作......

  • Javascript是一种由浏览器运行的技术.当facebook获取您的页面时,它不是正在执行此操作的浏览器,它是一个名为file_get_contents()的PHP函数.此函数不呈现页面也不执行javascript,它仅用于获取呈现的php页面或其包含的html的内容.当然会有javascript,但facebook不会执行它.它将简单地解析XFBML和OG标记的页面并使用它们.如果您的信息隐藏在Javascript中,它会看到它并忽略它... (3认同)