PHP:常量/ pagetitle和facebook like-button的问题

时间:2010-10-31 08:32:55

标签: php facebook constants

我正在使用常量以不同语言显示我的页面标题:

 // lang.en.php
 define(_PAGE_TITLE, "Pagetitle");

 // lang.de.php
 define(_PAGE_TITLE, "Seitentitel");

我在该页面上放置了一个像facebook一样的按钮,一切都有效,除了一件事:如果我使用like按钮提交链接,facebook中的标题会显示如下:

  

XY喜欢_PAGE_TITLE

常量不会被它在facebook中的值替换,但它会在HTML代码中被替换。有没有人有一个想法,如果facebook从我的网站上抓取了一个页面标题,为什么不替换常量?

谢谢。

修改 刚刚发现,facebook bot将HTTP_ACCEPT_LANGUAGE标头设置为英语,我的语言文件出现问题。无论如何,我希望机器人默认采用德语翻译。有没有办法抓住Facebook机器人并覆盖它的语言设置?

2 个答案:

答案 0 :(得分:0)

Facebook的服务器获取您的页面并提取标题以生成此信息。因此,猜测您的系统(由于某种原因)使用标题"_PAGE_TITLE"而不是语言文件中的正确值来呈现页面是合理的。这意味着facebook的自动请求有一些特殊之处,导致语言文件永远不会被包含在内。

那么是什么原因导致包含正确的lang文件?如果代码无法确定要包含哪种语言文件(例如,“Accept-Language”标题丢失......或其他任何内容),您的代码将会做什么。

应该回归到包含默认语言文件(可能是英文)。如果没有首先包含某些语言文件,则必须从不执行脚本。

答案 1 :(得分:0)

如果您正在使用新的Facebook API或社交插件,您可以使用<meta>标记覆盖页面标题,如下所示:

<meta property="og:title" content="<?php echo _GERMAN_PAGE_TITLE; ?>" />

记住!要使用此元属性标记,您必须在<html>标记上声明Facebook和Open Graph名称空间。

<html 
    xmlns:og="http://opengraphprotocol.org/schema/"
    xmlns:fb="http://www.facebook.com/2008/fbml"
>

要进一步阅读,请看一下:http://developers.facebook.com/docs/opengraph