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

我发现

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

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

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

你能为我提供任何帮助吗?

4

3 回答 3

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”替换#。我认为它被称为编码URI。

大家觉得这个解决方案怎么样?

于 2013-11-06T15:45:21.307 回答
1

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

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

  1. 使用Google+ 小部件而不是静态链接,并且不要指定 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 时,小部件将回退到来自 的 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));
    });
    
于 2013-11-06T15:19:15.747 回答
0

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

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

于 2013-11-06T14:33:57.417 回答