【问题标题】:how to get share buttons to use the current URL?如何获取共享按钮以使用当前 URL?
【发布时间】:2013-11-17 19:40:26
【问题描述】:
    <a href="http://www.linkedin.com/shareArticle?url=MY_URL" class="in-share-button" target="_blank"> 
<img src="my_img" alt="linkedin share button" title="Share on Linked In" /> </a>

目前这是我的分享按钮。我希望它共享当前在地址栏中的 url,而不是像 atm 那样的固定预设 url。

我找到了

&lt;?php $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo $url; ?&gt;

什么似乎符合我的需要。但是,当我用它更改“MY_URL”时,它只会创建一个指向我网站主页的链接。

它应该显示的 URL 看起来像“www.myurl.de/#/id_of_a_post”。 我觉得#是问题所在。 . .

你能帮我解决这个问题吗?

【问题讨论】:

  • 我不知道你要什么?
  • 很抱歉,如果您不清楚我提供的信息。我想用这个分享按钮分享一篇带有特定网址的文章。但上面的命令只是抓取主 url 而不是任何附加内容。它只需要“www.myurl.de”,而不需要“/#/id_of_a_post”
  • 看看这里。您无法从 PHP 中获取 #tag - 需要一些 JS:stackoverflow.com/questions/6119095/getting-full-url-with-tag
  • 哦,好吧,看起来正是我的问题。好像我搜索得不够深入^^感谢您提供问题

标签: php html twitter google-plus google-plus-one


【解决方案1】:

您无法在服务器端代码中读取 URL 的哈希部分。 # 后面的部分永远不会被浏览器发送到服务器。因此,如果您尝试使用 PHP 解决此问题,您将无法获得预期的行为。

您似乎是在依靠静态链接来执行共享。我只能回答 Google+,但使用 Google+,您有两种选择:

  1. 使用Google+ widget而不是静态链接并且不要指定HREF参数:

    <div class="g-plusone" data-annotation="none"></div>
    
    <!-- Place this tag after the last +1 button tag. -->
    <script type="text/javascript">
      (function() {
        var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
        po.src = 'https://apis.google.com/js/plusone.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
      })();
    </script>
    

    当未指定 href 且您未指定规范 URL 时,小部件将回退到来自 document.location.href 的默认 URL 值,这将是您的访问者的当前页面,包括 URL 的哈希部分.

  2. 使用 JavaScript 重写链接中的 URL 以附加您当前的哈希位置,例如,假设您将所有社交链接放入具有“共享”类的 div 中,然后您需要修改其中的所有 href使用 jQuery 的 div:

    var hash = document.location.hash;
    // Loop through each link in the sharing div
    $('.sharing a').each(function(){
      // Append the hash to the end of each already populated URL
      $(this).attr('href', $(this).attr('href') + encodeURIComponent('#' + hash));
    });
    

【讨论】:

    【解决方案2】:

    它只是以另一种方式工作。

    我的朋友创建了一个脚本来保存各个帖子的 ID:

    (function(){
        var numbers = document.URL.match(/\d+/g);
                        if(numbers !=  null){
                            $('#right-col').addClass('shown').removeClass('hidden');
                            $('#left-col').addClass('colPositioning');                        
                            $('#right_'+numbers).addClass('shown1');                         
                        ;}
    }());
    

    之后我就可以使用了:

    <a href="https://twitter.com/share?url=my_url/%23/?p=<?php the_id();?>" class="twitter-share-button" target="_blank"><img src="img_src"></a>
    

    关于它的技巧是将#替换为“%23”。我认为它叫做encodedURI。

    你们如何看待这个解决方案?

    【讨论】:

      【解决方案3】:

      共享可能不会完全按照您的想法运作。您正在使用 URL 的锚部分链接到页面上的特定位置,并且可能使用一些 javascript 来处理它并加载新的或不同的信息,或者显示/隐藏页面的其他部分,具体取决于值那个锚。

      虽然这适用于访问您网站的人,但它不适用于访问您网站的机器人(例如 Facebook 和 Google+ 使用的机器人,尽管我不知道 Linkedin 是否也这样做)获取信息的 sn-p 以显示为预览。因此,虽然链接本身可能有效,但网站上显示的预览几乎肯定不会反映锚定 URL 的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-15
        • 1970-01-01
        • 2022-11-17
        • 1970-01-01
        • 1970-01-01
        • 2011-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多