【问题标题】:Tumblr quick like button not workingTumblr 快速赞按钮不起作用
【发布时间】:2012-04-25 09:57:21
【问题描述】:

编辑,2013 年 4 月:不再需要旧代码。改用 Tumblr 的“喜欢”和“转发”按钮的新短代码!

http://developers.tumblr.com/post/49193689915/attn-fantastic-theme-developers-tumblr-users-can

旧代码:

我正在使用@ThinkingStiff 的代码 (https://stackoverflow.com/a/9048446/351320)。

下面是实际示例:http://themelab01.tumblr.com/

我的html代码:

    {block:Posts}
        {block:Text}
            <li id="{PostID}" class="post text">
                {block:Title}
                    <h3><a href="{Permalink}">{Title}</a></h3>
                {/block:Title}

                {Body}
            </li>
            <a href="{ReblogURL}" class="reblog">reblog</a>
            <a href="#" class="like">like</a>
        {/block:Text}

css

#like-it {
    display: none;
}
.liked, .like:hover {

    color: red !important;
}

js

$(document).on('click', '.like', function (event) {

    event.preventDefault();

    var command = $(this).hasClass('liked') ? 'unlike' : 'like',
        post = $(this).closest('.post'),
        oauth = post.find('.reblog').attr('href').slice(-8),
        id = post.attr('id'),
        likeUrl = 'http://www.tumblr.com/' + command + '/' + oauth + '?id=' + id;

    $('#like-it').attr('src', likeUrl);
    $(this).toggleClass('liked');

});

空的 iframe 位于页面底部。然而,这是行不通的。当我点击“喜欢”时,我的仪表板中喜欢的帖子数量会增加(其中显示“点赞 n.帖子”),但帖子不会出现在“喜欢”页面中,文本应该保持红色,但不会。什么是我失踪了?

【问题讨论】:

  • 我在下面发布了更新的代码。在上面的示例中,{block:Text} 中有 {PostID}。这意味着它不会在其他帖子类型上可见,例如图片。另外,我没有看到like-it&lt;iframe&gt;,所以这也可能是问题所在。不过,最简单的解决方案是使用我的新代码。

标签: javascript tumblr


【解决方案1】:

我最近更新了我的代码,使其成为一种剪切和粘贴工作。这消除了对 jQuery 和 post ID 的需要,这两个领域人们总是遇到麻烦。

教程在这里:http://like-button.tumblr.com

&lt;/head&gt; 之前将以下代码块剪切并粘贴到您的主题中。这将在每个帖子上为您提供一个类似于默认 Tumblr 灰色心形的“赞”按钮。当您将鼠标悬停在它上面并单击它时,它会变成红色。如果再次点击它,它会再次变灰并删除Like。

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

【讨论】:

  • 哦,太好了。谢谢!我应该先重新检查主要来源。现在就试试 :D 顺便说一句,有没有办法对此进行调整,以便将 js 放置在页面底部?我正在使用 html5 Boilerplate,将所有代码放在一个地方会很棒。 html5boilerplate.com/docs/plugins.js-and-script.js/#scriptjs
  • @Barbara 是的,它可以在页面底部。我可能会更改我的教程,因为更多人将代码放在底部。
  • 那太棒了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多