【问题标题】:change the url in facebook comments code?更改 facebook 评论代码中的 url?
【发布时间】:2012-02-10 09:50:42
【问题描述】:

在我的网站上,我有 200 多个页面,我想将 facebook cmets 功能添加到我的网站。我遇到的这个问题是我必须更改每个页面的代码(url)。我不想更改每一页的代码。如果您可以看到第二段包含 Url 的代码,我可以包含一个类似location.href 的方法,以便它可以使用页面的当前 url。我可以这样做吗?我不在乎它是 php、javascript 还是其他任何东西。

在您的页面上包含一次 JavaScript SDK,最好是在打开的 <body> 标记之后。

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

将插件代码放置在您希望插件出现在页面上的任何位置。

<div class="fb-comments" data-href="Url Goes Here" data-num-posts="2" data-width="470"></div>

【问题讨论】:

    标签: php javascript facebook


    【解决方案1】:

    这可用于在初始加载时获取页面 url。

    <?php
    function get_current_page()
    {
       $page_url = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
       $page_url .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
       return $page_url;
    }
    ?>
    
    <div class="fb-comments" data-href="<?php echo get_current_page(); ?>" data-num-posts="2" data-width="470"></div>
    

    如果在初始页面加载后更改了 url,则需要调用 FB.XFBML.parse() 来重新加载评论框。这对于在更改状态时不重新加载整个页面的 ajax 网站很有用。

    【讨论】:

      【解决方案2】:

      您可以使用div,然后在JavaScript 中使用innerHTML 方法动态创建其内容 它将是您的fb-comments 标签。可以通过document.location.href获取当前页面。

      在动态创建fb-comments 标记并将其呈现在div 中之后,您需要重新解析其内容以便解释XFBML。您可以使用FB.XFBML.parse() 方法来实现。

      var mydiv = document.getElementById('myCommentsDiv');  
      mydiv.innerHTML = 
         '<div class="fb-comments" data-href="' + document.location.href + '" data-num-posts="2" data-width="470"></fb:comments>';  
      FB.XFBML.parse(mydiv);  
      

      【讨论】:

      • 我试过你给我的代码,但它显示的是随机人的随机 cmets。
      • 尝试在浏览器中“查看源代码”以查看代码呈现的 html。
      • 你能给我们一个演示/示例页面的 url 让我们看看你有什么吗?
      • 啊。你的语法不正确。您应该将该代码放在普通的 javascript 脚本标签中。确保它在 document.fbAsyncInit 中运行。还要确保您拥有 myCommentsDiv。看起来你有很多学习要做。慢慢来。你可以得到它。
      • “确保它在 document.fbAsyncInit 中运行”是什么意思?无论如何,这是我现在拥有的代码......
      【解决方案3】:

      一个简单的建议是:

      <script type="text/javascript">
      document.write('<div class="fb-comments" data-href="' + document.location.href + '"
       data-num-posts="2" data-width="470"></div>');   
      </script>
      

      【讨论】:

        【解决方案4】:

        编辑:在这里找到解决方案: Different Facebook comment box after each ajax call

        您必须完全移除盒子并将其放回并调用 FB.XFBML.parse()

        【讨论】:

          【解决方案5】:

          这个对我有用:

          我这样定义网址:

          define('URL_FB','http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
          

          然后我这样回应:

          <div class="fb-comments" data-href="<?php echo URL_FB; ?>" data-width="470" data-num-posts="10" data-colorscheme="dark"></div>
          

          希望足够清楚。 :)

          【讨论】:

            猜你喜欢
            • 2015-09-26
            • 2011-12-29
            • 2012-09-30
            • 2012-02-11
            • 1970-01-01
            • 2011-10-16
            • 2012-09-29
            • 1970-01-01
            • 2014-11-04
            相关资源
            最近更新 更多