Плагин бесконечной прокрутки изменяет путь с помощью пользовательского запроса

Я использую плагин бесконечной прокрутки (infinite-scroll) с изотопом jQuery и мне интересно, возможно ли это чтобы изменить путь с пользовательскими параметрами запроса, когда пользователь прокручивает страницу вниз, чтобы просмотреть больше элементов.

Есть ли способ получить доступ к пути и изменить один из параметров запроса. Он попадает в путь в первый раз, возвращая первый набор элементов, а после этого он попадает на следующие страницы, 1,2 3 в порядке, но с использованием тех же параметров запроса, которые я использовал в первый раз, только обновляя номер страницы.

Я хотел бы изменить один из параметров при переходе на страницу 3 или 4 примерно так:

var customPath = path + "?type=items&category=clothes&pageNumber=";

Я подхожу к этому неправильно?

Вот мой код:

$container.infinitescroll({
    navSelector: '#page_nav', // selector for the paged navigation 
    nextSelector: '#page_nav a', // selector for the NEXT link (to page 2)
    itemSelector: '.element', // selector for all items you'll retrieve
    loading: {
        finishedMsg: 'No more categories to load.',
        msgText: "<em>Loading the next set of categories...</em>",
        img: 'http://i.imgur.com/qkKy8.gif'
    },
    pathParse: function (path, nextPage) {
        var customPath = path + "?type=items&category=all&pageNumber=";
        path = [customPath, '#contaner'];
        return path;
    }
},
// call Isotope as a callback
function (newElements) {
    $container.isotope('appended', $(newElements));
});

person Vasile Laur    schedule 17.09.2012    source источник
comment
ваш customPath является недопустимым синтаксисом js. у вас не может быть обуви внутри таких двойных кавычек. просто уберите двойные кавычки и все будет хорошо. ('&category=shoes&') я не думаю, что вы дали мне достаточно информации для понимания. Вы говорите, что хотите изменить категорию с одежды на обувь, когда пользователь достигает страницы 3? Означает ли это, что вы хотите оставаться на третьей странице одежды, а не на третьей странице обуви? что именно вы пытаетесь сделать?   -  person Ringo    schedule 17.09.2012
comment
Извините, это была ошибка с моей стороны, я удалил кавычки. Первоначально, когда пользователь видит страницу, на странице есть 30 элементов из разных категорий. Теперь на странице есть кнопка, и когда пользователь нажимает на нее, элементы фильтруются, и отображаются только предметы из категории одежды. Теперь, когда пользователь прокручивается вниз, мне нужно получить следующие 30 элементов, но мне нужно изменить запрос пути, чтобы я получал только предметы одежды категории, а не все предметы.   -  person Vasile Laur    schedule 17.09.2012
comment
я недостаточно знаю о бесконечной прокрутке, чтобы ответить, но вот вопрос с ответом, который может помочь. stackoverflow.com/questions/11397648 /   -  person Ringo    schedule 17.09.2012
comment
Спасибо, я смог немного взломать плагин, чтобы заставить его делать то, что я хотел.   -  person Vasile Laur    schedule 18.09.2012


Ответы (1)


Хорошо, поэтому мне пришлось немного взломать, но я заставил его работать для своих нужд благодаря Ричу за то, что он указал мне на связанный с этим вопрос.

Я добавил некоторые дополнительные свойства в прототип jquery.infinitescroll.js здесь:

//line 67
 $.infinitescroll.prototype = {
       //My custom parameters
        pageType: "&type=items",
        categoryParam: "&category=shoes",
        /*  
            ----------------------------
            Private methods
            ----------------------------
            */

Затем внутри вызываемой функции:

retrieve: function infscr_retrieve(pageNum) {}

есть переменная:

desturl = path.join(opts.state.currPage)

Изменил его на

desturl = path.join(opts.state.currPage + $.infinitescroll.prototype.pageType + $.infinitescroll.prototype.categoryParam);

Это добавит ваши дополнительные параметры запроса в конец desturl.

Затем на вашей странице, где у вас есть JavaScript, вы можете сделать что-то вроде этого:

$('#filters a').click(function () {
    $.infinitescroll.prototype.pageType = "&type=products" ;                  
    $.infinitescroll.prototype.pageType = "&category=clothes";                           
     return false;
});

Это обновит параметры запроса следующей страницы с вашими пользовательскими запросами.

Надеюсь, это поможет кому-то.

person Vasile Laur    schedule 17.09.2012