Tumblr主页上的心形(喜欢)按钮

4

看了这里以及谷歌群组上关于这个主题的各种帖子,我正在尝试使用Ciceron主题中的脚本来重现心形(喜欢)按钮,但到目前为止我还没有成功。

以下是我的代码。我错过了什么吗?有人设法解决了吗?

<head>中:

<script type="text/javascript" src="http://static.tumblr.com/53unaru/y8wlgzkbt/jquery.ui.totop.js"></script>
<script type="text/javascript">

$('a.like-link').click(function() {
    var post = $(this).closest('.post');
    var id = post.attr('id');
    var oauth = post.attr('rel').slice(-8);
    var like = 'http://www.tumblr.com/like/'+oauth+'?id='+id;
    $('#likeit').attr('src', like);
    $(this).addClass('liked'); return 
false;}) 

</script>

<head> 部分的 CSS 中:

#likeit {height: 0; width: 0; visibility: hidden;}

<body>标签中:
<iframe id="likeit"></iframe>
in {Block:post}:
<a href="#" class="like-link">Like</a>
1个回答

5
我已经更新了关于Tumblr的教程,以便更易于复制和粘贴:http://like-button.tumblr.com 您缺少oAuth密钥。每个帖子都有一个唯一的ID,必须发送到“Like”中。您可以在{ReblogURL}变量的末尾找到它(这是未记录的)。 它是最后8个字符。在您的示例中,它从帖子的rel属性中获取:
var oauth = post.attr('rel').slice(-8);

请将以下代码块剪切并粘贴到您的主题中,紧靠在</head>之前。这将为每个帖子提供一个类似于默认Tumblr灰色心形的“喜欢”按钮。当你悬停在它上面并点击它时,它会变成红色。如果再次点击它,它将变成灰色并删除该赞。

<style>
.my-like {
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAARCAYAAAA/mJfHAAABH0lEQVQ4y62T30vCUBiGv/9YuhBLkCA08FdogRFFYFEUhhZNCCQoSESiIOii68pl5qV6s8Eb7+SMHXNs6S7ejZ3zvA+ccT4BICofvS88dJ7w8vqG8WQC754K17lPjrx3z3l8D4YoVaqIrWbcJNbzaHefNZjfXPdy5b0jsO/IRqMxUpmSBnhz2bx1QL79GPbpEePmzhdSyW8fBDL0SK68HwiGCT2S3NiKREaPzP7QRRNPZSHpwm4kMnqkYbQikdEjZv8HK2ubS4nY75mD6WU8qzeXkrHvToBlWSjuHC4kYo99V8bwBnM0/iMiz542myq2bSPskcmR/zPos7lvP8Lv/nGd+/N6c2Xq2KcXhiY6qV1rxwotU3n/NHF8fgW+g9hfsHJlJUYljcgAAAAASUVORK5CYII=) !important;
    height:17px;
    width:19px;
    cursor:pointer;
    display:inline-block;
    vertical-align:top;
}
.my-liked, .my-like:hover {
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAARCAYAAAA/mJfHAAABSklEQVQ4y2P4//8/Awy/O3fu/905c/4/2779/69Pn/4jy8Hwz/fv/z/buvX/vfnz/7+/eBFFDZj4cOXK/8O+Pv+36+rA8W4zs/8Ply1DUXx/4cL/u0yMUdQdCQ76/+nWLbA6hq+PH//fbW6OogAZ3+zvByu81t6OU80ea6v/P16//s9wqboKpyIYPhYeTlDN1abG/wz7HR0JKiQGH3Bz+8+ww0CfKobtMjb6z0ANg+CGgQKPKt50dfnPcL6wkCqGXaoo/8/w5tgxyg3T0wUnYHBiPJuZSZFhF8pK/8NzACjrgKKWHINAOef3168Iw0D429OnGFmKEAZlJVDKR8mbMAyy4XRqClEGnc3J+f/nxw/MjI6OQflxh6EBzvR0Z9o0rCUKVsNA+MuD+/9PJiSgGHQmPf0/KDhw6cFpGAy/OnAAbOibEyf+E1ILAFBjDrchm7KrAAAAAElFTkSuQmCC) !important;
    height:17px;
    width:19px;
    cursor:pointer;
    display:inline-block;
    vertical-align:top;
}
</style>
<script>
window.onload = function () {
document.body.insertAdjacentHTML( 'beforeEnd', '<iframe id="my-like-frame" style="display:none;"></iframe>' );
document.addEventListener( 'click', function ( event ) {
    var myLikeLink = event.target;
    if( myLikeLink.className.indexOf( 'my-like' ) > -1 ) {
        var myLikeFrame = document.getElementById( 'my-like-frame' ),
            liked = ( myLikeLink.className == 'my-liked' ),
            command = liked ? 'unlike' : 'like',
            reblog = myLikeLink.getAttribute( 'data-reblog' ),
            postId = myLikeLink.getAttribute( 'data-id' ),
            oauth = reblog.slice( -8 ),
            likeUrl = 'http://www.tumblr.com/' + command + '/' + oauth + '?id=' + postId;
        myLikeFrame.src = likeUrl;
        liked ? myLikeLink.className = 'my-like'
            : myLikeLink.className = 'my-liked';
    };
}, false );
};
</script>

然后将以下按钮代码剪切并粘贴到您希望添加赞按钮的主题中(此必须在{block: Posts}块内)。

<div class="my-like" data-reblog="{ReblogURL}" data-id="{PostID}"></div>

1
谢谢,已经能用了!你的切换点赞/取消赞的技巧也很有效!来自法国的问候! - Ben
4
几周前,因为Tumblr添加了“喜欢”按钮到他们的主题语言中,这个功能停止了工作。我需要更新这篇文章。 - ThinkingStiff
2
@ThinkingStiff,在新模式下使其正常工作方面有进展了吗? - atonyc
@ThinkingStiff 我在控制台中遇到了错误 X-Frame-Options拒绝加载:http://www.tumblr.com/like/iKvmNy9T?id=236 不允许框架。 - Anil Gupta
1
只是为了澄清,这种方法将不再适用于新的“喜欢/转载”按钮。 - mikedidthis
显示剩余3条评论

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