Как сделать ajax ленту совместно с mFilter2 ?

Доброго дня, подскажите пожалуйста каким образом вместо пагинации результатов mFilter2 использовать безконечный скролл, как это сделать с getResources или pdoResources я знаю, написать сниппет который обработает результат pdoResources, вывести в формате json, а потом просто дергать нужное количество через post, а вот как это прикрутить к mFilter2 что то не могу понять как, заранее спасибо
Сергей Скат
22 декабря 2014, 10:45
modx.pro
2
3 259
0

Комментарии: 15

Сергей Скат
22 декабря 2014, 14:30
0
пытался заставить работать через pdoPage + ajax=`1` но почему то ответ не приходит
    Григорий Коленько
    22 декабря 2014, 15:13
    0
    Я так подозреваю надо переписывать default.js эмФильтра. Везде вместо подмены содержимого контейнера, вставлять .append().
    У меня такая же задача будет в текущем проекте. Как сделаю, отпишусь что да как.
      Сергей Скат
      22 декабря 2014, 15:26
      0
      хотелось бы его не переписывать, от обновлений в таком случае придется отказаться чего не хочется, я все пытаюсь заставить pdoPage выдать мне json но почему то не получается, однако в документашке написано что он может, что не так делаю пока не пойму
        Максим Кузнецов
        22 декабря 2014, 15:39
        0
        Выставить кастомые пути до js-файла — не вариант?

        Приложи форму вызова pdoPage для json-ответа.
          Сергей Скат
          22 декабря 2014, 15:49
          0
          <script>
              $(document).ready(function(){
                    console.log('asdas asd asd ');
                  $.get('index.php?id=1&page=2', function(response) {
                      console.log(response);
                    
                  }, 'json');
              });
          </script>
          
          
          [[mFilter2?
              &ajax=`1`
              &parents=`14165`
              &paginator=`pdoPage`
              &tpls=`search_block_item`
              &hideContainers=`1`
              &limit=`10`
             
             
              &includeTVs=`img,metro,okrug,area,price,price_ot,price_do,street,object_id,createPDF`
              &tvPrefix=``
              &toPlaceholders=`my.`  
              &showLog=`true`
              &filters=`
                  tv|metro,
                  tv|okrug,
                  tv|area:number,
                  tv|price:number
              `
              &tplFilter.row.tv|price=`tpl.mFilter2.filter.number`
              &tplFilter.row.tv|area=`tpl.mFilter2.filter.number`
              &tplFilter.row.tv|metro=`tpl.mFilter2.filter.checkbox`
              &tplFilter.row.tv|okrug=`tpl.mFilter2.filter.checkbox`
              &tplFilter.outer.tv|metro=`tpl.mFilter2.filter.outer.select`
              &tplFilter.outer.tv|okrug=`tpl.mFilter2.filter.outer.select`
          ]]
    Сергей Скат
    23 декабря 2014, 15:31
    0
    Пробовал так же оборачивать вызов mFiler2 в pdoPage но сервер сказал что памяти не хватает, и пробовал вызвать pdoPage с набором параметров по типа как в документации &paginator=`pdoPage@myParams` но все еще ничего =(
      Василий Наумкин
      23 декабря 2014, 16:17
      0
      Посмотри внимательно, что тебе возвращает сервер при запросе:


      Там уже есть всё нужное — пагинация и результаты. Остаётся только вставить контент в страницу и запросить следующую порцию при прокрутке.
        Сергей Скат
        23 декабря 2014, 16:28
        0
        ну как запрашивать порции при прокрутке я знаю, по примеру из документашки я так понимаю что результат должен прийти мне в консоль, но там пусто
          Василий Наумкин
          23 декабря 2014, 16:31
          0
          Ты картинку видишь? Видишь, что всё приходит в ответе от сервера? Видишь, что запрос и ответ работают через ajax?

          Если непонятно, что дальше делать — я ничем не могу помочь.
            Сергей Скат
            23 декабря 2014, 16:37
            0
            картинка не погрузилась сразу, понял, спасибо
              Сергей Скат
              23 декабря 2014, 19:22
              0
              очень странный результат я получил, я написал такой код

              var url = 'http://property.test.lmrk.ru/assets/components/msearch2/action.php';
                                      $.post(url, {
                                        action: 'filter',
                                        pageId: '1',
                                        'tv|area': '50,310393',
                                        'tv|price': '1500,49300',
                                        page: '8',
                                        key: window.mse2Config.key  // Кстати не пойму что это за ключ 
                                        },function(data){
                                          
                                          $('#mse2_results').html($.parseJSON(data).data.results);
                                      });
              и что самое интересное этот код не работает именно в моем регионе, вот текст ошибки

              XMLHttpRequest cannot load http://property.test.lmrk.ru/assets/components/msearch2/action.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://propery.test.lmrk.ru' is therefore not allowed access.
          Сергей Скат
          23 декабря 2014, 16:29
          0
          просто не пойму что не так делаю
          Сергей Скат
          24 декабря 2014, 16:26
          2
          0
          Кому интересно и кто айдет вопрос, mFilter2 уже отдает все результаты в json которые можно вертеть как угодно, вот мой код для реализации ленты

          <script>
                        var xhr_is_sent = false;        //флаг отправки
                       $(window).scroll(function() {
                            
                               if  ($(window).scrollTop() == $(document).height() - $(window).height()) 
                               {
                                  var url = '/assets/components/msearch2/action.php';
                                  if (!xhr_is_sent) {
                                      //отправляем запрос только если завершился предыдущий
                                      xhr_is_sent = true;
                                      $.post(url, {
                                        action: 'filter',
                                        pageId: '1',
                                        'tv|area': '50,310393',
                                        'tv|price': '1500,49300',
                                        page: '8',
                                        key: window.mse2Config.key // в это переменной содержится ключ , я так и не понял зачем он нужен но для каждого генерируется свой собственный 
                                        },function(data){
                                          $('#mse2_results').append($.parseJSON(data).data.results);
                                          xhr_is_sent = false;
                                      });
                                  }
                              }
                          });
                  </script>
          всем удачи, и всем спасибо кто помог в решении вопроса
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            15