我在我的网站上安装了Facebook评论。我的网站是一个动态网站,页面如下:www.example.com/page?id = 54,www.example.com / page?id = 67。
如果我在此页面发表评论:www.site.com/page?id = 54,它也会显示在www.example.com/page?id=67中。评论不是页面唯一的,而是出现在每个页面中
我看到了这个问题:Facebook comments, for each page。 这个问题的答案是问题是因为“?”标志。 看起来 ”?”登录URL使其为Facebook插件打破。 我需要改变URl写作的形式。
由于我的网站已有7年历史,因此我不想改变URl写作的方法。
还有另一种解决方法吗?
答案 0 :(得分:13)
首先,从Facebook复制评论div和脚本,将其粘贴到您的产品详细信息页面:
<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&appId=114215202075258";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
和
<div class="fb-comments" data-href="http://example.com" data-width="470" data-num-posts="3"></div>
最后,只需添加以下代码:
<script>
$(".fb-comments").attr("data-href", window.location.href);
</script>
答案 1 :(得分:4)
如果您正在使用PHP,则此代码将请求当前页面的URL,然后将Facebook评论链接到该页面:
<?PHP
$url = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
echo "<div class='fb-comments' data-href='$url' data-num-posts='10' data-width='470'></div>";
?>
如果您的动态内容只有一个查询字符串(例如?product =),则此方法有效。如果它有相同页面的更多查询字符串,例如&amp; sort = for sorting options,那么它将无法正常工作,因为排序选项升序时出现的Facebook评论不会出现在排序选项降序上,因为示例
您可以通过为该产品分配基本网址,然后在该产品的所有动态网页上显示该网址的FB评论来解决此问题。例如,您正在为页面请求FB评论?product = 13&amp; sort = asc&amp; type = 34,即使该页面上的&amp; sort和&amp; type不同。
答案 2 :(得分:1)
将小部件插入页面时,您可以添加类似于以下代码的内容:
<div class="fb-comments" data-href="http://example.com" data-num-posts="2" data-width="470"></div>
您需要每次为新页面替换http://example.com,一次用?id = 54,另一次用?id = 67替换每个相关页面。
答案 3 :(得分:0)
但是,如果您可以更改网站,这就是您需要做的事情:
<head>
部分,如同插件文档网站上所述。您可以使用.asp编码技巧通过查询字符串参数以编程方式执行此操作。修改强>
看看Facebook看到你的网址
注意插件代码
坏: data-href="http://winebar.co.il/product.asp?productid="
如果应该看起来像用户浏览器栏中的URL:
GOOD: data-href="http://www.winebar.co.il/product.asp?productid=567&CatCode=182"