К содержанию

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

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

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

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

        Приложи форму вызова pdoPage для json-ответа.
          Сергей Скат
          Сергей Скат Проверенный
          22 декабря 2014, 15:49
          <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
    Пробовал так же оборачивать вызов mFiler2 в pdoPage но сервер сказал что памяти не хватает, и пробовал вызвать pdoPage с набором параметров по типа как в документации &paginator=`pdoPage@myParams` но все еще ничего =(
      Василий Наумкин
      Василий Наумкин Администратор
      23 декабря 2014, 16:17
      Посмотри внимательно, что тебе возвращает сервер при запросе:


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

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

              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, 19:32
                У Вас кроссдоменный запрос
                  Сергей Скат
                  Сергей Скат Проверенный
                  23 декабря 2014, 19:35
                  это я понял, как с этим бороться?
            Сергей Скат
            Сергей Скат Проверенный
            23 декабря 2014, 16:29
            просто не пойму что не так делаю
            Сергей Скат
            Сергей Скат Проверенный
            24 декабря 2014, 16:26
            Кому интересно и кто айдет вопрос, 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