Вид пагинации в mFilter2 если одна страница

Александр
Александр
992
13
Содержание:
  1. Комментарии
Александр, доброго дня! В mFilter2 по умолчанию, если страница результатов всего одна, блок с пагинацией пропадает, ну или кнопка если использовать ajax подгрузку, подскажите пожалуйста, как сделать чтобы блок не пропадал а становился не активным?

И как можно сделать чтобы в место блока пагинации, при условии что страница с результатами всего одна, показывать другой блок?

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

  1. Nik
    Nik
    31.01.2020, 14:33
    Что-то на подобии такого?

    А зачем кнопки вправо — влево? Если страница одна. Не совсем понял задумку
    1. Александр
      Александр
      31.01.2020, 18:57
      Чтобы было понятно, что это блок пагинации, но он не активный, так как страница всего одна а не просто 1, а там можно уже что-то добавить, убрать, подправить и всё остальное, примерно такая задумка.
    2. Александр Мальцев
      Александр Мальцев
      23.01.2020, 16:39
      Привет!
      Эти изменения можно осуществить правкой js файла этого компонента.
      Например, для того чтобы сделать кнопку «Загрузить ещё» видимой и недоступной нужно в этот файл внести следующие изменения:
      ...
      if (!has_results) {
        //more.hide();
        more.addClass('disabled');
      }
      ...
      
      Если вам нужно реализовать вывод какого-то другого блока, то это всё осуществляется в функции, в которой приведён код выше:
      ...
      handlePagination: function () {
        var pcre = new RegExp(mse2Config['pageVar'] + '[=|\/|-](\\d+)');
        switch (mse2Config['mode']) {
          case 'button':
            ...               
            break;
          case 'scroll':
            ...
            break;
          default:
            ...
        }
      },
      ...
      
      В ней можно насписать логику ту, которая нужна.
      1. Александр
        Александр
        31.01.2020, 07:14
        Александр, здравствуйте с кнопкой всё предельно понятно, спасибо, а как тоже самое с блоком обычной постраничной пагинации сделать?
        1. Александр Мальцев
          Александр Мальцев
          31.01.2020, 08:19
          Привет! А как он должен выводиться, если страница одна? Кнопки влево, вправо и с цифрой 1?
          1. Александр
            Александр
            31.01.2020, 09:30
            Да, как это можно сделать?
            1. Александр Мальцев
              Александр Мальцев
              02.02.2020, 06:39
              Можно просто написать скриптик на JavaScript:
              function getParameterByName(name, url) {
                if (!url) url = window.location.href;
                name = name.replace(/[\[\]]/g, '\\$&');
                var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
                  results = regex.exec(url);
                if (!results) return null;
                if (!results[2]) return '';
                return decodeURIComponent(results[2].replace(/\+/g, ' '));
              }
                
              $(function(){
                var query = getParameterByName('query');
                if (query && !$('.pagination .page-item').length) {
                  var html = '<li class="page-item disabled"><span class="page-link">Первая</span></li><li class="page-item disabled"><span class="page-link">1</span></li><li class="page-item disabled"><span class="page-link">Последняя</span></li>';
                  $('.pagination').html(html);
                }
              });
              
              Т.е. проверять есть ли в URL параметр query и количество элементов .page-item в .pagination. Если параметр есть и количество элементов равно 0, то вставить в блок .pagination определённый HTML-код.
              1. Александр
                Александр
                03.02.2020, 00:57
                Спасибо! Александр правда у меня не работает с этим символом && в этой строке:
                if (query && !$('.pagination .page-item').length) {
                с + или = работает, но есть проблема, работает только при обновлении страницы а если используешь фильтры, не выводит блок пока не обновишь страницу, как это можно исправить?
                1. Александр Мальцев
                  Александр Мальцев
                  04.02.2020, 14:09
                  Значит нужно ещё добавить тот же код при наступлении события mse2_load:
                  $(function(){
                    $(document).on('mse2_load', function(){
                       ...
                    });
                  });
                  
                  1. Александр
                    Александр
                    04.02.2020, 17:17
                    Не много уточню вопрос, если использовать два одинаковых скрипта, но один повесить на событие mse2_load, то при перезагрузке страницы всё работает, но правильно ли это? И это лучший вариант в данном случае или как-то можно по другому, чтобы не дублировать скрипт?
                    1. Александр Мальцев
                      Александр Мальцев
                      06.02.2020, 13:49
                      Просто создайте функцию, а потом её вызывайте в 2 местах (после загрузки страницы и при наступлении события mse2_load:
                      function getParameterByName(name, url) {
                        if (!url) url = window.location.href;
                        name = name.replace(/[\[\]]/g, '\\$&');
                        var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
                          results = regex.exec(url);
                        if (!results) return null;
                        if (!results[2]) return '';
                        return decodeURIComponent(results[2].replace(/\+/g, ' '));
                      }
                        
                      $(function(){
                        function updatePagination() {
                          var query = getParameterByName('query');
                          if (query && !$('.pagination .page-item').length) {
                            var html = '<li class="page-item disabled"><span class="page-link">Первая</span></li><li class="page-item disabled"><span class="page-link">1</span></li><li class="page-item disabled"><span class="page-link">Последняя</span></li>';
                            $('.pagination').html(html);
                          }
                        }
                        updatePagination();
                        $(document).on('mse2_load', updatePagination);
                      });
                      
                      1. Александр
                        Александр
                        07.02.2020, 09:45
                        Спасибо!
                    2. Александр
                      Александр
                      04.02.2020, 17:03
                      Пора бы мне уже запомнить, что нужно использовать событие: mse2_load, спасибо. Александр а как сделать чтобы блок не пропадал, при перезагрузке страницы?
        Войдите, пожалуйста, в аккаунт, чтобы оставить комментарий.