如何让共享按钮使用当前的URL?

时间:2013-11-06 14:10:07

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

    <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>

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

我找到了

<?php $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo $url; ?>

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

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

你可以给我任何帮助吗?

3 个答案:

答案 0 :(得分: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值,该值将是访问者的当前页面,包括哈希部分网址。

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

    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));
    });
    

答案 1 :(得分:1)

它只是另一种方式。

我的朋友创建了一个脚本,用于保存各个帖子的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。

你们对这个解决方案有什么看法?

答案 2 :(得分:0)

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

虽然这适用于访问您网站的用户,但对于访问您网站的漫游器(例如Facebook和Google+使用的漫游器,虽然我不知道Linkedin是否也这样做)也不适用获取要显示为预览的一小部分信息。因此,虽然链接本身可能有效,但网站上显示的预览几乎肯定不会反映锚定URL的内容。