我有一个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运行页面时,出现以下两个错误:
网址&#39; http://www.livakursertestsite.dk/kurser/babytegn-2&#39;的 键入&#39;网站&#39;是无效的,因为必需的属性&#39; og:title&#39;的 键入&#39; string&#39;没有提供。
第二个错误:
卷曲错误:BAD_CONTENT_ENCODING处理内容时出错 取消编码:无效的块类型
我试过了:
您可以在此处查看该网站: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" />
我现在也尝试过:
Facebook调试器仍然无法获取数据。
编辑#2:
在@CBroe的评论之后我修复了页面,所以它可以被验证,没有错误,但仍然没有运气。
答案 0 :(得分:16)
您可能想尝试禁用任何类型的压缩,例如PHP中的GZIP压缩。这帮助我在Joomla 3.3网站上遇到了类似的问题。
我启用了GZIP压缩,Facebook无法抓取我的网站。禁用GZIP压缩解决了这个问题。
我还没想到它是Joomla问题还是一般的GZIP / PHP问题或facebook刮擦问题。
编辑:通过分享行动,Facebook只会读取您网页的前40k。启用GZIP时,只读取前40k会产生问题,因为它无法解压缩部分内容。
更好的解决方案是仅针对Facebook,LinkedIn等网站禁用GZIP。
你可以使用名为gzip的小插件非常友好控制:http://extensions.joomla.org/extensions/core-enhancements/performance/site-performance/27725
或者使用此codee https://github.com/dgt41/(压缩xml和php文件,然后将其作为插件安装)
请注意:如果您的站点上安装了JCH Optimize模块,则需要禁用该插件提供的gzip压缩。所有其他选项可以保持激活而不会出现任何问题,包括本机Joomla gzip压缩。
干杯, Teeuwis
答案 1 :(得分:1)
我在joomla 3中找到了解决问题的解决方案只修改了joomla核心的2个文件,因此您不必关闭GZIP选项。只有在检测到facebook抓取工具时才会自动关闭。
https://github.com/dgt41/joomla-cms/commit/6eef42e50e3f3e4c78c93285de7f9ecfe8bbfbf5和一个解决问题的插件,但这个对我不好。
https://github.com/dgt41/facebookfix/commit/e1d5aa3a1a94f7751d3b69db78ba1aa02dfc37c6