【发布时间】:2014-08-20 13:02:45
【问题描述】:
我有一个 Joomla 页面 (v3.2.4),我在其中使用 PHP 放入了一些动态 Open Graph 标签,如下所示:
PHP,在标签之前:
$getcid = JRequest::getVar('id');
if(!isset($getcid)) {
$title = "LIVA Kurser";
$description = "Danmarks største udbyder af kurser til såvel offentlige og erhverv samt private.";
$image = "http://www.livakursertestsite.dk/images/liva-logo.jpg";
$type = "website";
} else {
$db = JFactory::getDbo();
$user = JFactory::getUser();
$query = $db->getQuery(true);
$ogquery = "SELECT DISTINCT * FROM jos_managecourse WHERE state = '1' AND id = '".$getcid."' LIMIT 1";
$db->setQuery($ogquery);
$db->query();
$getcourse = $db->loadObjectList();
$description = substr(strip_tags($getcourse[0]->details), 0, 247);
$title = $getcourse[0]->course_name;
$description = preg_replace( "/\r|\n/", "", $description );
$description = str_replace( " ", " ", $description );
$image = JURI::root()."administrator/components/com_managecourse/images/".$getcourse[0]->image_url;
$type = "article";
}
在我的标签中,我有这个:
<!-- Facebook Open Graph -->
<meta property="fb:app_id" content="502033806595590" />
<meta property="og:site_name" content="LIVA Kurser" />
<meta property="og:type" content="<?php echo $type; ?>" />
<meta property="og:title" content="<?php echo $title; ?>" />
<meta property="og:url" content="<?php echo JURI::current(); ?>" />
<meta property="og:image" content="<?php echo $image; ?>" />
<meta property="og:description" content="<?php echo $description; ?>..." />
<!-- End Facebook Open Graph -->
当我通过Facebook Object Debugger 运行页面时,出现以下两个错误:
URL 'http://www.livakursertestsite.dk/kurser/babytegn-2' 的对象 类型“网站”无效,因为必需的属性“og:title” 未提供类型“字符串”。
第二个错误:
Curl 错误:处理内容时出现 BAD_CONTENT_ENCODING 错误 unencoding: 无效的块类型
我试过了:
- 将代码移动到标题标签的下方和上方
- 将其移动到头部标签的最顶部和最底部,但是 两者都不起作用。
- 将 PHP 代码放入 head-tag 中,但仍然没有。
您可以在这里查看该网站:http://www.livakursertestsite.dk/kurser/babytegn-2
编辑:
我已经从标签中删除了 PHP 代码,所以它们不再是动态的,看看这是否是原因,但事实并非如此。现在代码如下所示:
<meta property="og:locale" content="da_DK" />
<meta property="og:type" content="website" />
<meta property="og:title" content="LIVA Kurser" />
<meta property="og:description" content="Beskrivelse..." />
<meta property="og:url" content="http://www.livakursertestsite.dk/kurser" />
<meta property="og:image" content="http://www.livakursertestsite.dk/images/liva-logo.jpg" />
<meta property="fb:app_id" content="502033806595590" />
<meta property="og:site_name" content="LIVA Kurser" />
我现在也试过了:
- 在Googles Rich Snippets testing tool 上测试站点,以及 Google 会获取所有数据。
- 删除所有非强制性 Open Graph 标记,因此只存在四个强制性标记(类型、标题、网址和图像)。
- 删除所有导致 Firebug 错误的 javascript。
Facebook 调试器仍然无法获取数据。
编辑#2:
在@CBroe 发表评论后,我修复了页面,因此可以对其进行验证,没有错误,但仍然没有运气。
【问题讨论】:
-
validator.w3.org/check?uri=http://www.livakursertestsite.dk/… - 看起来您的文档中的字节序列不是有效的 UTF-8 - 所以先修复它。
-
哇,我没注意到!现在所有错误都已清除,但我仍然无法调试页面..
标签: php html facebook facebook-graph-api joomla