Magento のリスト ページのすべての製品に Facebook のようなボタンを配置しました。スクリーンショットは次のとおりです。
私は2つの問題を抱えています:
- いいねボタンをクリックしてポップアップが表示されると、Facebook で共有される画像は通常、製品の画像ではありません。ページからランダムな画像をスクレイピングしているようです。
- 共有されるコンテンツには 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 に、いいねボタンを有効にするスクリプトを追加しました。
<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>
これが機能しない理由について何か考えはありますか? ありがとう。