htmlbuttontumblrsocial-media-like

Re: Tumblr "like-heart-button" script on homepage


I tried working with this coding posted on Nara's question, but I'm not sure how I'm suppose to do the HTML part of it. I kinda figured it had to be in <a href=""></a> tag, but not sure if I need to add a class or an id. I've been playing around with the coding for awhile now, but still have not figured it out. I would really appreciate it if anyone could explain it to me a bit better. It would really mean a lot.


Solution

  • I have a tutorial on this at: http://like-button.tumblr.com. It's been updated over time to eliminate the problem areas people have with implementing this. It's now a simple cut and paste.

    To add Like functionality, you use the following URL and set it as the src attribute of an invisible <iframe>:

    http://www.tumblr.com/<command>/<oauthId>?id=<postId>
    

    Example:

    http://www.tumblr.com/like/fGKvAJgQ?id=16664837215
    

    Cut and paste the following code block into your theme immediately before </head>. This will give you a Like button on each post that looks like the default Tumblr grey heart. It will turn red when you hover over it and when you click it. If you click it again, it will turn grey again and delete the Like.

    Code:

    <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 myLike = event.target;
        if( myLike.className.indexOf( 'my-like' ) > -1 ) {
            var frame = document.getElementById( 'my-like-frame' ),
                liked = ( myLike.className == 'my-liked' ),
                command = liked ? 'unlike' : 'like',
                reblog = myLike.getAttribute( 'data-reblog' ),
                id = myLike.getAttribute( 'data-id' ),
                oauth = reblog.slice( -8 );
            frame.src = 'http://www.tumblr.com/' + command + '/' + oauth + '?id=' + id;
            liked ? myLike.className = 'my-like' : myLike.className = 'my-liked';
        };
    }, false );
    };
    </script>
    

    Then cut and paste the following button code into your theme where you want your like button to be (this must be inside your {block:Posts} block).

    Code:

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