Использование кнопки «Нравится» на Tumblr с бесконечной прокруткой

Я пытаюсь использовать новые кнопки «Нравится» Tumblr в Infinite Scroll (позволяя вашей теме использовать кнопку «Нравится» для отдельных сообщений Tumblr с главной страницы), они работают для первых 15 сообщений первой «страницы», но затем, как только загружается другое страница, кнопка Нравится перестает работать. Это инструкции, данные от Tumblr на странице Документов:

Функция: Tumblr.LikeButton.get_status_by_page(n)
Описание: Вызывайте эту функцию после запроса новой страницы сообщений. Принимает номер только что загруженной страницы в виде целого числа.

Функция: Tumblr.LikeButton.get_status_by_post_ids([n,n,n])
Описание: Запрос статуса «Мне нравится» для отдельных сообщений. Принимает массив идентификаторов сообщений.

Поскольку я не знаю, как правильно применять JQuery, я не знаю, куда добавить эти функции, вот мой JS для моей текущей темы:

    // MASONRY
    var $container = $('#content');

    $container.imagesLoaded( function(){
        $container.masonry({
            itemSelector: '.entry',
            columnWidth: 220
        });
    });

    // INFINITE SCROLL
    $container.infinitescroll({
        navSelector  : '#pagination',
        nextSelector : '#pagination li a.pagination_nextlink',
        itemSelector : '.entry',
        loading: {
            img: 'http://static.tumblr.com/glziqhp/K37m9yaub/257__1_.gif'
        }
    },

    function( newElements ) {
        var $newElems = $( newElements ).css({
            opacity: 0
        });
        $newElems.imagesLoaded(function(){
            $newElems.animate({
                opacity: 1
            });
            $container.masonry(
                'appended', $newElems, true
            ); 
        });
    });

person andbamnan    schedule 05.05.2013    source источник


Ответы (1)


Сначала вам нужно добавить уникальный идентификатор сообщения к каждому из ваших сообщений:

<div class="entry masonry-brick" id="{PostID}">...</div>

В документации упоминается запрос подобного статуса после добавления/загрузки новых сообщений (или новой страницы):

function( newElements ) {
    var $newElems = $( newElements ).css({
        opacity: 0
    });

    // Create Array of $newElems IDs
    var $newElemsIDs = $newElems.map(function () { 
        return this.id; 
    }).get();

    $newElems.imagesLoaded(function(){
        $newElems.animate({
            opacity: 1
        });
        $container.masonry(
            'appended', $newElems, true
        );

        // Let's just see what we have, remove console.log() if working
        console.log($newElems, $newElemsIDs);


        Tumblr.LikeButton.get_status_by_post_ids($newElemsIDs);
    });
});

Я надеюсь, что это указывает вам в правильном направлении.

person mikedidthis    schedule 06.05.2013
comment
Большое спасибо за вашу помощь, к сожалению, это не сработало. Вот мой Tumblr: andbamnan.tumblr.com Если вы вышли из Tumblr/у вас нет учетной записи тогда это работает нормально (я думаю, потому что они просто превратились в общие ссылки для подписки на Tumblr), но как только вы вошли в систему, сердца просто не появляются после первой страницы. - person andbamnan; 09.05.2013
comment
Ты чемпион mikedidthis, сработало как шарм. Спасибо, приятель ! - person Dan; 22.03.2015
comment
Это сработало отлично, спасибо. Существует ли официальная документация для этого? нигде не могу найти - person jordan314; 04.03.2016