0

我在 Magento 的列表页面上为每个产品添加了 Facebook Like 按钮。这是一个屏幕截图:

在此处输入图像描述

我有两个问题:

  1. 单击“赞”按钮并出现弹出窗口时,将在 Facebook 上共享的图像通常不是产品的图像。它似乎正在从页面上抓取随机图像。
  2. 将共享的内容包括 HTML 标记。它从产品的描述字段中抓取文本,其中包括 HTML 标记。值得注意的是,我的产品页面的元描述似乎也在从产品描述字段中提取它们的内容,包括 html 标签。

据我所知,我已经正确设置了所有内容,但也许我遗漏了一些东西。这是我到目前为止所做的:

在 head.phtml 中,我添加了这些元标记,这些标记遵循 Facebook 的 Open Graph 协议,应该定义正确的图像和文本(我指定了不包含任何 HTML 标记的简短描述,而不是长描述):

<?php
$product = Mage::registry('current_product');
if($product)
{
?>
<meta property="og:title" content="<?php echo trim($product->getName()); ?>"/>
<meta property="og:description" content="<?php echo trim($product->getShortDescription()); ?>"/>
<meta property="og:url" content="<?php echo $this->helper('core/url')->getCurrentUrl();?>"/>
<meta property="og:type" content="product"/>
<meta property="og:image" content="<?php echo $this->helper('catalog/image')->init($product, 'image') ;?>"/>
<?php
}
?>

在 header.phtml 中,我添加了启用like 按钮的脚本:

<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/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>

在 list.phtml 中,我添加了我希望它出现的按钮元素,动态指定要喜欢的产品的 URL:

<div class="fb-like" style="display:none;" data-href="<?php echo $_product->getProductUrl() ?>" data-send="false" data-layout="button_count" data-width="450" data-show-faces="false"></div>

关于为什么这不起作用的任何想法?谢谢。

4

1 回答 1

1

您可能想使用 php strip_tags()。看看去除 HTML 和特殊字符

例如

<meta property="og:description" content="<?php echo strip_tags(trim($product->getShortDescription())); ?>"/>
于 2013-05-15T20:52:04.583 回答