Twitter的Tweet按钮不计数

20

我正在使用来自Twitter官方的Tweet Button,让用户分享我的网站。

按钮本身可以正常工作,但计数器不起作用,始终保持为零。 (在你发布推文后,客户端会递增计数器,但如果你按下F5键,计数器将再次变为零)

这是我用来包含按钮的非常简单的代码:

<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.whattheplace.com/Show/1/" data-count="vertical">Tweet</a>
<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
指定的 URL(http://www.whattheplace.com/Show/1/)是一个正常的 URL,返回 HTTP 状态码为 200 的网页,即没有重定向或其他可能会混淆 Twitter 的内容。
我在 http://www.whattheplace.com/static/tweetbutton.html 上准备了一个小例子,您可以在那里看到问题。在 http://www.whattheplace.com 的“真实”页面中,推文按钮被 AddThis 包装,但问题完全相同。
我认为这可能与新的 Twitter URL 缩短器(t.co)有关,但我无法证明,而且它似乎在其他人的页面上运行得非常好。
7个回答

15

这可能有一些相关问题。其中一个是,如果链接被缩短,Twitter 不会将其添加到计数中,除非您添加 "counturl" url 属性。

此外,Twitter 不会计算来自受保护账户(不分享其推文的账户)的推文数量。

请告知是否以上解决方案都无效。

干杯!


1
我尝试在http://whattheplace.com/static/tweetbutton.html上使用data-counturl(底部的两个按钮)与非受保护的Twitter帐户@chrism_test,但仍然无法正常工作。 :-( - ChrisM

13

2

我很幸运地从URL参数方法转换为数据属性方法。

function twtrButton(url, text, configs){
    // Create a link
    var params = {
        rel: 'canonical',
        'data-count': 'horizontal',
        href: 'http://twitter.com/share/'
    };
    if (url) {
        params['data-url'] = url;
        params['data-counturl'] = url;
    }
    if (text) {
        if(text.length > 90){
            text = text.substring(0, 90);
            text += '...';
        }
        params['data-text'] = text;
    }
    if (configs) {
        if (configs.via) {
            params['data-via'] = configs.via;
        }
        if (configs.related) {
            params['data-related'] = configs.related;
        }
    }
    var link = $('<a>', params).addClass('twitter-share-button');
    return link;
}

这段代码假设使用的是 jQuery 1.5 或更高版本。

1

如果您想显示计数并涉及到URL缩短器(通常都会涉及),则必须同时使用"data-count"和"data-url"。

  data-url="http://dev.twitter.com/pages/tweet_button"
  data-count="vertical"

1

我觉得你忘了加上 data-via="#" 这个属性。

<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.whattheplace.com/Show/1/" data-count="vertical" data-via="#">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>

如果它被包裹在添加按钮周围,我很确定您应该将它与 Twitter 按钮本身“混合”,您应该使用类似以下的内容:
<!-- AddThis Button BEGIN -->
<div class="addthis_toolbox addthis_default_style">
<a class="addthis_button_facebook_like" fb:like:layout="button_count"></a>
<a class="addthis_button_tweet"></a>
<a class="addthis_counter addthis_pill_style"></a>
</div>
<script type="text/javascript">var addthis_config = {"data_track_clickback":true};</script>
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=viralizate"></script>
<!-- AddThis Button END -->

我觉得这个问题不太清晰,但还是希望我的回答有所帮助!如果您进一步解释一下,我很乐意进行编辑!(只要我知道答案的话)

祝好运!

Trufa


我尝试了data-via,但它只是在推文文本中添加了“via @#”,根据文档(http://dev.twitter.com/pages/tweet_button)的说明,这应该是正确的。但我担心我不理解你的第二个建议。问题与AddThis无关,原始的Tweet Button也会出现这种情况。 - ChrisM

1

这不是data-url,因为那是缩短的网址...我认为你没必要包括它。设置 data-counturl=THE_PAGES_ACTUAL_URL,这样无论别人使用什么缩短工具,都会增加和显示实际网址的计数。就像这样...data-counturl="<?php echo $_SERVER['PHP_SELF']; ?>"

--- 嗯...算了,我说得太早了...


2
这是重要的部分。data-counturl 属性必须指向扩展的最终目标。 - Dex

1
我也遇到了这个问题,后来发现它与我设置的“canonical”链接标签的值有关。它被设置为http://www.iphone4simulator.com,但tweet按钮却分享http://iphone4simulator.com,因为我已经设置了DNS服务器以从地址中删除www字符串。当我将标记中的规范URL值更改为后者时,按钮就像魔术般地工作了!

谢谢,但这似乎不是问题所在。我已经准备了一个新的示例网址:http://whattheplace.com/static/tweetbutton.html 我点击了所有的推文按钮,但只有最后两个(指向 .html 文件的那些)会计数。我不明白最后两个和第三、第四个 URL 之间的区别,因为它们都是有效的 HTML 文档,没有重定向(前两个 URL 重定向可能是它们无法工作的原因)。 - ChrisM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接