Использование кнопки Tumblr Like с бесконечной прокруткой
Я пытаюсь использовать новые кнопки, подобные 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
);
});
});
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);
});
});
Я надеюсь, что это указывает на правильное направление.